html에 hr (수평 규칙)이 있다는 것을 알고 있지만 vr (수직 규칙)이 있다고 생각하지 않습니다. 내가 틀렸고 그렇지 않은 경우 왜 수직 규칙이 없습니까?
hr
요소가 자동으로 수직이됩니다. height
속성 을 설정하면 됩니다 (예 : 높이 : 80 %;).
html에 hr (수평 규칙)이 있다는 것을 알고 있지만 vr (수직 규칙)이 있다고 생각하지 않습니다. 내가 틀렸고 그렇지 않은 경우 왜 수직 규칙이 없습니까?
hr
요소가 자동으로 수직이됩니다. height
속성 을 설정하면 됩니다 (예 : 높이 : 80 %;).
답변:
아니요, 수직 규칙은 없습니다.
논리적 인 의미는 없습니다. HTML은 순차적으로 구문 분석됩니다. 즉, HTML 코드를 위에서 아래로, 왼쪽에서 오른쪽으로, 위에서 아래로, 왼쪽에서 오른쪽으로 (일반적으로) 표시하는 방법을 의미합니다.
vr 태그는 해당 패러다임을 따르지 않습니다.
그러나 CSS를 사용하면 쉽습니다. 전의:
<div style="border-left:1px solid #000;height:500px"></div>
높이를 지정하거나 컨테이너로 내용물을 채워야합니다.
다른 사람들이 지적한 바와 같이, 수직 규칙의 개념은 HTML 문서의 구조와 표현에 대한 독창적 인 아이디어와 맞지 않습니다. 그러나 요즘 (특히 웹 응용 프로그램의 확산으로 인해) 실제로 유용한 유용한 시나리오가 거의 없습니다.
예를 들어, 대부분의 창 GUI 응용 프로그램의 메뉴 표시 줄과 유사하게 화면 상단에 고정 된 가로 탐색 메뉴를 고려하십시오. 클릭하면 열리는 드롭 다운 메뉴를 왼쪽에서 오른쪽으로 정렬하는 여러 가지 최상위 메뉴 항목이 있습니다. 몇 년 전, 단일 행 테이블로 이것을 작성하는 것이 일반적인 관행 이었지만 이것은 나쁜 HTML이며 올바른 이동 방법은 엄청나게 커스터마이징 된 CSS가있는 목록 일 것입니다.
이제 비슷한 항목을 그룹화하고 그룹 사이에 세로 구분 기호를 추가하여 다음과 같이하십시오.
[Item 1a] [Item 1b] | [Item 2a] [Item 2b]
<hr style="width: 1px; height: 100%; ..." />
작품을 사용 하지만 해당 요소의 실제 내용을 변경하면 의미 상 올바르지 않은 것으로 간주 될 수 있습니다. 또한 HTML DTD가 인라인 레벨 요소 만 허용하는 특정 요소 (예 : 요소 내)에서는이를 사용할 수 없습니다 <span>
.
더 나은 옵션은 <span style="display: inline-block; width:1px; height:100%; background:#000; margin: 0 2px;"></span>
이지만 모든 브라우저가 display: inline-block;
CSS 속성을 지원하는 것은 아니므로 실제 인라인 수준 옵션은 이미지를 다음과 같이 사용하는 것입니다.
<img src="pixel.gif" alt="|" style="width:1px; height:100%; background:#000; margin: 0 2px;" />
이는 파이프 문자가 이미지 대신 표시되므로 lynx와 같은 텍스트 전용 브라우저와 호환되는 이점이 있습니다. (M $ IE가 대체 텍스트를 툴팁으로 잘못 사용한다는 것은 여전히 귀찮습니다. 제목 속성의 목적입니다!)
어때요?
writing-mode:tb-rl
위-> 아래, 오른쪽-> 왼쪽?
이를 위해서는 수직 규칙이 필요합니다.
display : flex 내부의 <hr>는 세로로 표시합니다.
JSFiddle : https://jsfiddle.net/w6y5t1kL/
예:
<div style="display:flex;">
<div>
Content
<ul>
<li>Continued content...</li>
</ul>
</div>
<hr>
<div>
Content
<ul>
<li>Continued content...</li>
</ul>
</div>
</div>
그것을 시도하고 당신은 자신을 알게 될 것입니다 :
<body>
rokon<br />
rkn <hr style="width: 1px; height: 10px; display: inline; margin-left: 2px; margin-right: 2px;" />rockon<br />
rocks
</body>
</html>
고대의 질문이지만이 문제를 해결 display:flex;
했으며 훌륭하게 작동합니다.
<div style="display:flex;border:1px dotted black;margin-bottom:20px;">
<div>
This is a div
</div>
<div style="border-left:1px solid black;margin:0 7.5px;"></div>
<div>
This is another div
</div>
</div>
https://jsfiddle.net/6qfd59vm/3/
이 솔루션에는 고정 높이가 필요하지 않습니다.
탐색으로 사용되는 목록 항목의 맥락에서 <vr /> 태그는 매우 유용합니다. 존재하지 않는 이유는 10 년 전 HTML과 관련하여 "논리적으로 이해가되지 않기"때문입니다.
요소를 등록하십시오.
var vr = document.registerElement('v-r'); // vertical rule please, yes!
* -
모든 사용자 정의 요소에서 필수입니다.
v-r {
height: 100%;
width: 1px;
border-left: 1px solid gray;
/*display: inline-block;*/
/*margin: 0 auto;*/
}
* 요소의 높이를 포함하도록 확장되지 display:inline-block|inline
않기 때문에 약간 바이올린을 사용해야 할 수도 있습니다 inline
. 컨테이너 내에서 선을 중앙에 맞추려면 여백을 사용하십시오.
js: document.body.appendChild(new vr());
or
HTML: <v-r></v-r>
* 불행히도 사용자 정의 자동 닫기 태그를 만들 수 없습니다.
<h1>THIS<v-r></v-r>WORKS</h1>
예 : http://html5.qry.me/vertical-rule
이 CSS 클래스를 지정된 요소에 적용하기 만하면됩니다.
.vr {
height: 100%;
width: 1px;
border-left: 1px solid gray;
/*display: inline-block;*/
/*margin: 0 auto;*/
}
* 위의 참고 사항을 참조하십시오.
SO의 원래 답변에
연결하십시오 .
다음과 같이 사용자 정의 태그를 만들 수 있습니다.
<html>
<head>
<style>
vr {
display: inline-block;
// This is where you'd set the ruler color
background-color: black;
// This is where you'd set the ruler width
width: 2px;
//this is where you'd set the spacing between the ruler and surrounding text
margin: 0px 5px 0px 5px;
height: 100%;
vertical-align: top;
}
</style>
</head>
<body>
this is text <vr></vr> more text
</body>
</html>
(누구든지이 정보를 "오픈 엔드"태그로 바꿀 수있는 방법을 알고 있다면 <hr>
알려 주시면 수정하겠습니다.)
<vr />
HTML에는 태그가 없지만 |를 사용할 수 있습니다.
새로운 HTML5 SVG 태그를 사용할 수 있습니다.
<svg style="position:absolute;width:100%;height:100%;">
<line id="myVerticalLine" y1="0" y2="100" x1="0" x2="0">
</line>
</svg>
선의 이미지를 쉽게 만든 다음 필요에 따라 너비 및 / 또는 높이를 설정하여 코드에 "규칙"으로 삽입합니다. 이들은 모두 수평 규칙 이미지이지만 "수직 규칙"이미지 사용을 막을 수있는 것은 없습니다.
이것은 여러 가지 이유로 시원합니다. 서로 다른 선, 색상 또는 패턴을 "규칙"으로 쉽게 사용할 수 있으며, 텍스트가 없기 때문에 HTML에서 hr을 사용하여 "정상"방식으로 수행 했더라도 SEO 또는 기타 항목에 영향을 미치지 않아야합니다. 그. 그리고 이미지 파일은 매우 작거나 같아야합니다 (최대 1 또는 2KB).
지나치게 복잡한 답변이 너무 많습니다. rowspan을 사용하여 원하는 행 수에 걸쳐있는 TableData 태그를 작성하십시오. 그런 다음 실제 막대에 오른쪽 테두리를 사용하십시오.
예:
<td rowspan="5" style="border-right-color: #000000; border-right-width: thin; border-right-style: solid"> </td>
<td rowspan="5"> </td>
두 번째 줄의 "& nbsp"가 첫 번째 줄과 동일한 양의 줄을 실행하는지 확인하십시오. 둘 사이에 적절한 간격이 있도록
이 기술은 HTML5에서 제 시간을 잘 보냈습니다.
텍스트를위한 열을 만들려고하는 사람들을 위해 사용하는 열 규칙 속성이 있습니다!
.content{
margin: 20px 5%;
padding: 5px;
}
.content p{
-webkit-column-count: 3;
-moz-column-count:3;
-o-column-count:3;
column-count: 3;
-webkit-column-rule: 1px solid #ccc;
-moz-column-rule: 1px solid #ccc;
-o-column-rule: 1px solid #ccc;
column-rule: 1px solid #ccc;
text-align: justify;
}
<div class="content">
<p>
Lorizzle ipsum tellivizzle sit amizzle, consectetizzle adipiscing elit. Nullam away things, shizznit stuff, suscipizzle shiz, gravida vizzle, funky fresh. Doggy phat tortizzle. Check it out its fo rizzle. Bizzle izzle shizzle my nizzle crocodizzle dapibus turpizzle tempizzle i'm in the shizzle. Mauris gizzle nibh et ghetto. Vestibulum ass phat. Pellentesque eleifend nizzle nisi. Fo shizzle my shizz shiznit fo shizzle dizzle. Donec dapibus. That's the shizzle uhuh ... yih! urna, pretium eu, mattizzle cool, shit things, nunc. Fizzle suscipizzle. Shizzlin dizzle semper daahng dawg boofron bow wow wow.
</p>
</div>
없기.
왜? 아마도 두 개의 열이있는 테이블이 할 것이기 때문입니다.
아니 없어. 그리고 왜 그렇지 않은지에 대한 작은 이야기를하겠습니다. 그러나 먼저 빠른 솔루션 :
기본 요소에 대한) 사용 CSS 클래스 span
/ div
예 : <span class="vr"></span>
:
.vr{
display: inline-block;
vertical-align: middle;
/* note that height must be precise, 100% does not work in some major browsers */
height: 100px;
width: 1px;
background-color: #000;
}
사용 데모 => https://jsfiddle.net/fe3tasa0/
b):first-child
형제 / 네이버 요소 사이에 일반 구분선을 적용하려면 한쪽 테두리 만 사용 하고 CSS 선택기를 사용하십시오.
<vr>
피팅 에 관한 이야기 ,여기에 많은 대답은 수직 분배기가 원래의 HTML 패러다임 / 접근법에 맞지 않는다는 것을 제안합니다 ... 그것은 완전히 잘못되었습니다. 또한 그 대답은 스스로 모순된다.
같은 사람들이 아마도 그들의 명확한 CSS 클래스를 "clearfix"라고 부릅니다. 플로팅에 대해서는 고칠 것이 없습니다. 그냥 지우는 것 <clear>
입니다. HTML3에는 요소도있었습니다 . 슬프게도, 이것과 떠 다니는 클리어런스는 몇 가지 일반적인 오해 중 하나입니다.
어쨌든. "돌아 가기 다음"는 "원래 HTML 세"에서처럼 뭔가에 대해 어떤 생각이 없었다 inline-block
가 단지 있었다 blocks
, inlines
하고 tables
.
마지막은 실제로 <vr>
존재하지 않는 이유 입니다.
당시에는 다음과 같이 가정했습니다.
수직으로 무언가를 나누거나 왼쪽에서 오른쪽으로 더 많은 블록
을 만들려면 =>
=> 열을 만들거나 만들고 싶습니다 =>
=> 테이블을 만들고 있음을 의미합니다 =>
= > 표에는 셀 사이에 자연 경계가 있습니다 .<vr>
이 방법은 실제로 여전히 유효하지만 시간이 보여 주듯이 표에 대한 구문은 모든 경우와 기본 스타일에 적합하지 않습니다.
:first-child
나는 위의 제안 선택을 ...