#css #html #word-wrap
#css #HTML #перенос слов
Вопрос:
У меня есть этот простой html со стилем:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style>
#buttons { width:300px; max-width:300px; border-width:1px; white-space:normal; border-style:solid; }
#buttons span { cursor:default; padding:10px; white-space: nowrap; }
</style>
</head>
<body>
<nav id="buttons">
<span>Some Button</span><span>Button</span><span>A longer button</span><span>Another button</span><span>Click me first</span><span>Button</span></nav>
</body>
</html>
Основной элемент блока (#buttons) должен быть фиксированным по ширине, но содержащие элементы span генерируются динамически и имеют переменную длину. Я хочу, чтобы эти элементы «span» обертывались и оставались внутри блока, независимо от того, сколько их. Таким образом, в основном элемент основного блока должен расширяться по вертикали, если это необходимо.
Прямо сейчас они расширяются по горизонтали, переполняя основной контейнер.
По какой-то странной причине, если я помещаю пробелы между встроенными элементами ‘span’, это работает. Но я не могу этого сделать на производстве (они прикреплены к DOM с помощью библиотеки javascript).
Ответ №1:
Я добавил биты, выделенные жирным шрифтом, в ваш css:
#buttons { width:300px; max-width:300px; border-width:1px; white-space:normal; border-style:solid; **overflow: auto;** }
#buttons span { **float: left;** cursor:defau< padding:10px; white-space: nowrap; }
Можно увидеть в действии на http://jsfiddle.net/S9rz8 /
Думаете, это то, что вы хотите?
Ответ №2:
Этот ответ, если вам нужно более одного элемента в строке.
Если вы добавляете float: left;
к стилю промежутки, они переносятся. Добавьте position: absolute;
в #buttons, чтобы контейнер имел высоту.
Ответ №3:
Я думаю, что рассматриваются оба ваших элемента inline
.
Создайте их display:block
, и все должно работать нормально.
Комментарии:
1. Это предполагает, что оператору требуется один элемент на строку, что неясно из вопроса.
2. Nav считается блоком в html5. И создание промежутков «блоков» просто поместит их один под другим, но я хочу, чтобы они отображались в строке, только при переполнении nav -> перейти на новую строку.
3. Я вставил какой-то фиктивный текст, извините. 🙂 На самом деле это пользовательские кнопки с пользовательским текстом на них.
4. Смотрите мой ответ для более чем одного элемента в строке. 🙂