범위에서 CSS 고정 너비


381

순서가없는 목록 내에서 :

<li><span></span> The lazy dog.</li>
<li><span>AND</span> The lazy cat.</li>
<li><span>OR</span> The active goldfish.</li>

클래스 또는 스타일 속성을 추가 할 수는 있지만 텍스트를 채우거나 태그를 추가하거나 변경할 수 없습니다.

페이지가 Courier New로 렌더링됩니다.

스팬 이후에 텍스트를 정렬하는 것이 목표입니다.

    The lazy dog.
AND The lazy cat.
OR  The active goldfish.

"OR"의 정당성은 중요하지 않습니다.

게으른 동물 텍스트는 추가 요소로 싸여있을 수 있지만 다시 확인해야합니다.

답변:


427

ul {
  list-style-type: none;
  padding-left: 0px;
}

ul li span {
  float: left;
  width: 40px;
}
<ul>
  <li><span></span> The lazy dog.</li>
  <li><span>AND</span> The lazy cat.</li>
  <li><span>OR</span> The active goldfish.</li>
</ul>

Eoin이 말했듯이, "빈"범위에 비파괴 공간을 넣어야하지만 인라인 요소에 너비를 할당 할 수없고 패딩 / 여백 만 지정할 수 있으므로 플로팅을해야 플로팅 할 수 있습니다 너비를 지정하십시오.

jsfiddle 예제는 http://jsfiddle.net/laurensrietveld/JZ2Lg/를 참조하십시오.


1
<span>은 기본적으로 인라인 요소이며 부동하면 너비가 제공되지 않습니다.
codeinthehole

56
float 속성은 너비가있는 "블록 상자"를 생성합니다.
Stephen Caldwell

83
diplay: inline-block; width: 32px;최신 브라우저에서 수행 될 것입니다.
Paulo Bueno

2
@Randy Marsh-아니요, 너비 속성은 Stephen Caldwell이 위에서 설명한 것처럼 float 속성이 요소를 블록 표시로 변경하기 때문에 효과가 있습니다.
codeinthehole

14
@PauloBueno , BTW diplay를 읽을 수 있도록 변경할 수 있습니다 display. 고마워
basarat

507

이상적인 세계에서는 다음 CSS를 사용하여 간단히 달성 할 수 있습니다.

<style type="text/css">

span {
  display: inline-block;
  width: 50px;
}

</style>

이것은 FF2 이하의 모든 브라우저에서 작동합니다.

Firefox 2 이하는이 값을 지원하지 않습니다. -moz-inline-box를 사용할 수 있지만 인라인 블록과 같지 않으며 일부 상황에서 예상대로 작동하지 않을 수 있습니다.

quirksmode 에서 가져온 견적


1
@NicholasPickering .. wkhtmltopdf는 어떻습니까?
codeinthehole

흠, 확실하지 않다. 사소한 혼란입니다. 원하는 효과를 얻기 위해 테이블을 사용해야했습니다.
니콜라스 피커링

CSS3를 준수하는 것이 필요한 경우 wkhtmltopdf를 추천 할 수 있습니다.
codeinthehole

7
한편, 10 년 후, 이것은 확실히 갈 길입니다.
vog September

19

불행히도 인라인 요소 (또는 display : inline이있는 요소)는 width 속성을 무시합니다. 대신 부동 div를 사용해야합니다.

<style type="text/css">
div.f1 { float: left; width: 20px; }
div.f2 { float: left; }
div.f3 { clear: both; }
</style>

<div class="f1"></div><div class="f2">The Lazy dog</div><div class="f3"></div>
<div class="f1">AND</div><div class="f2">The Lazy cat</div><div class="f3"></div>
<div class="f1">OR</div><div class="f2">The active goldfish</div><div class="f3"></div>

이제 범위와 목록을 사용해야하므로이 부분을 약간 다시 작성해야합니다.

<html><head>
<style type="text/css">
        span.f1 { display: block; float: left; clear: left; width: 60px; }
    li { list-style-type: none; }
    </style>

</head><body>
<ul>
<li><span class="f1">&nbsp;</span>The lazy dog.</li>
<li><span class="f1">AND</span> The lazy cat.</li>
<li><span class="f1">OR</span> The active goldfish.</li>
</ul>
</body>
</html>

3
좋은 해결책입니다. 부동 div는 수평으로 정렬 될 때 의도 된 범위의 동작을 모방합니다. 명확한 두 줄 바꿈을 기억하는 것이 중요합니다. 이 상황에서 테이블을 피하는 좋은 방법입니다.
artur

버튼이 인라인 또는 인라인 블록 요소라는 것을 이해하지 못합니다. 왜 "너비"가 적용됩니까? 버튼은 인라인 요소처럼 보입니까? 모든 html 요소의 기본 "디스플레이"속성을 보여주는 문서가 있습니까?
GMsoF

14

<span>태그로 설정 될 필요 display:block가 인라인 요소 폭 무시한다.

그래서:

<style type="text/css"> span { width: 50px; display: block; } </style>

그리고:

<li><span>&nbsp;</span>something</li>
<li><span>AND</span>something else</li>

아니요, 이것이 효과가 있다고 생각하지 않습니다. "무언가"는 다음 줄로 넘어갑니다. 그리고 "<"가 없습니다
user1537366

내가 말했듯이 작동하지 않습니다! jsfiddle.net/m156a0qp 를 확인하십시오 . 또한 모든 span 요소의 CSS를 다루는 것은 좋지 않습니다!
user1537366

4
<style type="text/css">

span {
  position:absolute;
  width: 50px;
}

</style>

인라인 요소의 너비를 지정하기 위해이 방법을 사용할 수 있습니다


2

이 경우 사람들은 span 요소가 될 수 없습니다. li 요소 사이의 나머지 텍스트는 아래로 이동하기 때문입니다. 또한 float를 사용하는 것은 전체 li 요소의 너비를 설정해야 하며이 너비는 전체 ul 요소 또는 다른 컨테이너의 너비와 동일해야하기 때문에 매우 나쁜 생각입니다.

html에서 이와 같은 것을 시도하십시오 :

<li><span></span><strong>The</strong> lazy dog.</li>
<li><span>AND</span> <strong>The</strong> lazy cat.</li>
<li><span>OR</span>  <strong>The</strong> active goldfish.</li>

그리고 CSS에서

li {position:relative;padding-left:80px;} // 80px or something else
li span {position:absolute;top:0;left:0;}
li strong {color:red;} // red or else

따라서 li 요소가 상대적 일 때 span 요소를 절대 및 최상위로 서식을 지정합니다 .0; left : 0; 따라서 왼쪽 위를 유지하고 padding-left (또는 padding : 0px 0px 0px 80px;)를 설정하여 span 요소의 여유 공간을 설정합니다.

간단한 경우에는 더 잘 작동합니다.


1

이 시도

> <span class="input-group-addon" style="padding-left:6%;
> padding-right:6%; width:150px; overflow: auto;">

1

HTML 5.0을 사용하여, 텍스트 블록의 수정 폭을 사용하는 것이 가능하다 <span><div>.

여기에 이미지 설명을 입력하십시오

의 경우 <span>중요한 것은 다음 CCS 라인을 추가하는 것입니다

display: inline-block;

빈 공간을 확보 <span>하는 것이 중요 &nbsp;합니다.

내 코드는 다음과 같습니다

body
	{
	font-family: Arial;
	font-size:20px;
	}

div
	{
	width:200px;
	font-size:80px;
	background-color: lime;
	}
div span
	{
	display:block;
	width:200px;
	background-color: lime;
	}

ul li span
	{
	display: inline-block;
	width: 80px;
	background-color: yellow;
	}
span.tab
	{
	display: inline-block;
	width: 80px;
	background-color: yellow;
	}
&lt;DIV&gt;

<div class='test'>ABCDEF</div>

&lt;SPAN&gt;

<div>
    <span class='test'>ABCDEF</span>
</div

<br>

<ul>
  <li><span class='tab'>&nbsp;</span> The lazy dog.</li>
  <li><span class='tab'>AND</span> The lazy cat.</li>
  <li><span class='tab'>OR</span> The active goldfish.</li>
</ul>

추신 : CSS 선택기가 내 PC에서 작동하지 tab않기 때문에 클래스를 정의했습니다 ul li span!


& nbsp; 삽입 나를 위해 일한 것입니다!
adrien le coarer

0

테이블을 사용하여 할 수 있지만 순수한 CSS는 아닙니다.

<style>
ul{
    text-indent: 40px;
}

li{
    list-style-type: none;
    padding: 0;
}

span{
    color: #ff0000;
    position: relative;
    left: -40px;
}
</style>


<ul>
<span></span><li>The lazy dog.</li>
<span>AND</span><li>The lazy cat.</li>
<span>OR</span><li>The active goldfish.</li>
</ul>

각 옵션에서 라인을 전환하기 때문에 원하는대로 정확하게 표시되지 않습니다. 그러나 이것이 답변에 더 가까이 다가 가기를 바랍니다.


-1

음, 항상 무차별 강제 방법이 있습니다.

<li><pre>    The lazy dog.</pre></li>
<li><pre>AND The lazy cat.</pre></li>
<li><pre>OR  The active goldfish.</pre></li>

아니면 텍스트를 "패딩"한다는 의미입니까? 그것은이 맥락에서 모호한 작업입니다.

이것은 일종의 숙제 질문처럼 들립니다. 우리가 당신을 위해 숙제를하게하지 않기를 바랍니다.


-1

ul {
	list-style-type: none;
	padding-left: 0px;
}

ul li span { 
	float: left;
	width: 40px;
}
<ul>
    <li><span></span> The lazy dog.</li>
    <li><span>AND</span> The lazy cat.</li>
    <li><span>OR</span> The active goldfish.</li>
</ul>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.