Фиксированная ширина CSS в диапазоне

В неупорядоченном списке:

<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.

Обоснование «ИЛИ» неважно.

Ленивый текст с животными может быть заключен в дополнительный элемент, но мне придется дважды проверить.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
396
0
782 233
11
Перейти к ответу Данный вопрос помечен как решенный

Ответы 11

Ответ принят как подходящий

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>

Как сказал Эоин, вам нужно поместить неразрывный пробел в свои «пустые» промежутки, но вы не можете назначить ширину встроенному элементу, только заполнение / поле, поэтому вам нужно сделать его плавающим, чтобы вы могли дайте ему ширину.

Для примера jsfiddle см. http://jsfiddle.net/laurensrietveld/JZ2Lg/

<span> по умолчанию является встроенным элементом, и при перемещении он не имеет ширины.

codeinthehole 03.11.2008 02:14

Свойство float создает «блок-бокс», который имеет ширину.

Stephen Caldwell 03.11.2008 02:23

@touqen, предоставленный вами css не дает диапазону равной ширины в ff3 или Opera 9.51

codeinthehole 03.11.2008 03:00

@codeinthehole - Правда? Здесь он отлично работает (ff-3.0.3).

Stephen Caldwell 03.11.2008 04:55

Если это будет diplay: inline-block; width: 32px;, он будет работать в большинстве современных браузеров.

Paulo Bueno 09.01.2012 22:18

@codeinthehole WebKit дает ему ширину (если, конечно, вы указываете свойство width).

Constantino Tsarouhas 04.03.2012 18:25

@Randy Marsh - нет, свойство width имеет эффект только потому, что свойство float изменяет элемент на отображение блока, как Стивен Колдуэлл описывает выше.

codeinthehole 09.03.2012 22:44

@PauloBueno, можешь сменить diplay на чтение display, кстати, у меня это работает. Благодарность

basarat 22.08.2013 07:10

К сожалению, встроенные элементы (или элементы, имеющие 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>

Это отличное решение. Плавающие div имитируют предполагаемое поведение промежутков, выстраиваясь по горизонтали. Важно помнить о четком: оба разрыва строки. В этом контексте это отличный способ избежать использования таблиц.

artur 11.02.2010 19:22

Я не понимаю, кнопка является встроенным или встроенным блочным элементом, почему к ней будет применяться "ширина"? Кнопка кажется встроенным элементом, верно? Есть ли какой-либо документ, показывающий "отображаемые" свойства по умолчанию для всех элементов html?

Sam YC 25.04.2014 12:32

Вы можете сделать это с помощью таблицы, но это не чистый 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>

Обратите внимание, что он отображается не так, как вы хотите, потому что он переключает строку для каждого параметра. Однако я надеюсь, что это поможет вам приблизиться к ответу.

Тег <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 08.02.2015 14:59

Как я уже сказал, НЕ работает! Проверьте jsfiddle.net/m156a0qp. Кроме того, никогда не стоит вмешиваться в CSS всех элементов span!

user1537366 12.02.2015 14:03

В идеальном мире вы бы достигли этого, просто используя следующий css

<style type = "text/css">

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

</style>

Это работает во всех браузерах, кроме FF2 и ниже.

Firefox 2 and lower don't support this value. You can use -moz-inline-box, but be aware that it's not the same as inline-block, and it may not work as you expect in some situations.

Цитата из quirksmode

@NicholasPickering .. как насчет wkhtmltopdf?

codeinthehole 02.05.2013 18:03

Хм, не уверен. Это всего лишь небольшая неудача. Закончилось тем, что для получения желаемого эффекта пришлось пользоваться таблицами.

Nick Pickering 02.05.2013 18:10

Что ж, я могу порекомендовать wkhtmltopdf, если вам когда-нибудь понадобится что-то совместимое с CSS3.

codeinthehole 03.05.2013 18:39

Между тем, 10 лет спустя, это определенно правильный путь.

vog 28.09.2018 10:49

Что ж, всегда есть метод грубой силы:

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

Или это то, что вы имели в виду под «заполнением» текста? В этом контексте это неоднозначная работа.

Это похоже на вопрос домашнего задания. Надеюсь, вы не пытаетесь заставить нас делать за вас домашнее задание?

В этом случае диапазон людей не может быть блочным, потому что остальной текст между элементами 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.

Он должен работать лучше для простых случаев.

<style type = "text/css">

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

</style>

Вы можете использовать этот метод для назначения ширины встроенным элементам

попробуй это

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

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>

Используя 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>

PS: Я определил класс tab, потому что селектор CSS ul li span не работает на моем ПК!

Другие вопросы по теме