Форум программистов, компьютерный форум, киберфорум
HTML, CSS
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/34: Рейтинг темы: голосов - 34, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 25.09.2019
Сообщений: 8

Ширина блока по ширине контента

25.09.2019, 16:05. Показов 6526. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, можно ли только корректировкой CSS решить задачу? Для демонстрации есть упрощенный код. Кнопки меню. Когда название раздела умещается в 180 точек - все ОК. Когда название раздела разбивается на две строки, кнопка остается максимальной ширины, при ширине контента много меньшей. Можно ли без JS получить ширину кнопки соответствующую ширине контента?

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<style>
.menu {
    width:100%;
    border:1px solid red;
}
 
.but {
    display:inline-block;
    max-width:180px;
    padding:5px 15px;
    vertical-align:middle;
    border:1px solid red;
}
</style>
 
<div class="menu">
    <div class="but">Короткий контент</div>
    <div class="but">Не очень длинный контент</div>
    <div class="but">Деятельность и бездеятельность</div>
    <div class="but">Информация - дезинформация</div>
    <div class="but">Просто контент</div>
    <div class="but">Контент</div>
</div>
Получается картинка во вложении. По картинке задача - сделать 2,3,4 кнопки шириной их надписей.

Пробовал и оборачивать контент .but разными блоками, и разные вариации width/min-width/max-width, и разные варианции display самого but или обертки внутри but, и -webkit-min-content - или бесполезно или не то.

Может кто знает?
Миниатюры
Ширина блока по ширине контента  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.09.2019, 16:05
Ответы с готовыми решениями:

Ширина div по ширине дочернего, который absolute
&lt;div class=&quot;parent&quot; style=&quot;position: relative;&quot;&gt; &lt;div class=&quot;child&quot; style=&quot;position:absolute, min-width:186px;&quot;&gt;&lt;/div&gt; &lt;/div&gt; ...

Левый блок по ширине контента
https://jsfiddle.net/Lvjp4feo/ &lt;div style=&quot;padding&quot;&gt; &lt;span class=&quot;in_text&quot; style=&quot;width:100%;&quot;&gt; &lt;span...

Меняющаяся ширина основного контента
Всем привет! Занимаюсь версткой сайта. У меня такая проблема: на некоторых страницах есть левое меню, а на некоторых нет, мне нужно, чтобы...

15
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
25.09.2019, 16:09
Цитата Сообщение от Alehandros Посмотреть сообщение
кнопка остается максимальной ширины, при ширине контента много меньшей.
Как раз-таки ширина контента будет больше 180px, поэтому и переносятся слова
0
0 / 0 / 0
Регистрация: 25.09.2019
Сообщений: 8
25.09.2019, 16:18  [ТС]
shvyrevvg, это то ясно, для того и переносятся слова, чтобы не растягивать кнопки более некоторой ширины. Вопрос в том, как сделать ширину двустрочной кнопки не более ширины надписи. Средствами JS .onload могу, но они скорее всего неестетственные для ситуации.
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
25.09.2019, 16:27
Alehandros, есть медиа запросы, есть display: flex для родителя.
0
0 / 0 / 0
Регистрация: 25.09.2019
Сообщений: 8
25.09.2019, 16:46  [ТС]
Пардон, моих знаний не хватает, чтобы найти решение указанными способами. Подскажете?
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
25.09.2019, 16:57
Alehandros, пример, при ширине "экрана" до 600px будет максимальная ширина 100px
CSS
1
2
3
4
5
@media (max-width: 600px) {
  .but {
    max-width:100px;
  }
}
0
0 / 0 / 0
Регистрация: 25.09.2019
Сообщений: 8
25.09.2019, 17:04  [ТС]
Спасибо, но это не то решение. Адаптивность верстки для разных экранов решена иначе - отдельное мобильное меню, вертикальным списком. Стоит задача для большого меню, для названий не помещающихся в одну строку сделать компактные кнопки с надписью в две строки.
0
0 / 0 / 0
Регистрация: 25.09.2019
Сообщений: 8
25.09.2019, 17:06  [ТС]
shvyrevvg, т.е. из вида первой картинки получить вид второй (вложение)
Миниатюры
Ширина блока по ширине контента  
0
38 / 27 / 12
Регистрация: 13.09.2019
Сообщений: 126
25.09.2019, 17:36
Alehandros, Вам нужно, чтобы вторая кнопка была как первая по высоте, только в две строки?
1
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
25.09.2019, 17:37
Цитата Сообщение от Alehandros Посмотреть сообщение
т.е. из вида первой картинки получить вид второй
Alehandros, если на столько все плохо, добавляйте картинки для разных размеров(мобильный, планшет, пк), я то откуда знаю как Вам нужно
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3959 / 2075 / 832
Регистрация: 13.03.2010
Сообщений: 6,843
25.09.2019, 19:05
CSS
1
2
3
4
5
6
7
8
9
10
11
.menu {
    width:100%;
    display: flex;
    justify-content: space-between;
}
 
.but {
    padding:5px 15px;
    vertical-align:middle;
    border:1px solid red;
}
0
0 / 0 / 0
Регистрация: 25.09.2019
Сообщений: 8
27.09.2019, 15:34  [ТС]
Не о том все. Простите, похоже сложно объяснил что требуется. Упрощаю вопрос:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<style>
.block {
    display:inline-block;
    max-width:170px;
    border:1px solid red;
    padding:5px;
}
 
.content {
    display:inline;
    border:1px solid green;
}
</style>
 
<div class="block">
    <div class="content">Бесполезная информация</div>
</div>
Отдает block максимальной ширины (170px) при заполнении контентом в две строки шириной чуть более 85px. Есть ли способ заставить block принимать ширину по ширине контента в этом случае?

Добавлено через 12 минут
В общем случае в контенте может быть все что угодно 2 - 5 слов, союзы, предлоги, дефисы и т.п. Поэтому
width:-webkit-min-content; для content не подходит в общем случае
JS onload не хотелось бы
есть решение с расстановкой принудительных <br>, но это тоже не просто в общих случаях
0
38 / 27 / 12
Регистрация: 13.09.2019
Сообщений: 126
27.09.2019, 16:38
Alehandros,
Как альтернативу можно использовать перенос слов
CSS
1
word-break: break-all;
А вам зачем такие жесткие условия если не секрет?
1
0 / 0 / 0
Регистрация: 25.09.2019
Сообщений: 8
27.09.2019, 17:09  [ТС]
Тоже не решение, но спасибо.

Да не секрет. Как всегда дело в пожеланиях заказчика. Речь о портале, включающем в себя сайты региональных организаций разного уровня. Общий шаблон и разнообразные главные меню, в которых может быть самый разнообразный набор разделов - от "Главная", "О нас" и "Новости" до "Самый важный раздел не может быть коротким". Убеждения о пользе коротких названий не имеют действия. И такие кнопки тоже "должны быть в главном меню". Вот и ищу простые способы впихнуть невпихнуемое в кнопки главного меню в компактном виде. Там выше картинки про это.
0
38 / 27 / 12
Регистрация: 13.09.2019
Сообщений: 126
28.09.2019, 11:47
Alehandros, Тут наверное JS поможет только если, или скрывать часть текста и при наведение изменять размер кнопки, хз
1
0 / 0 / 0
Регистрация: 25.09.2019
Сообщений: 8
29.09.2019, 00:27  [ТС]
Cheeeasy2501, да, спасибо! Я тоже так и не нашел вменяемого решения, кроме JS. Так и сделал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.09.2019, 00:27
Помогаю со студенческими работами здесь

Выровнять элементы списка по центру или по ширине контента
как-то можно их выровнять по центру - ну или по ширине дивчика контент?? кто как думает - нормально нет так отображать элементы списка в...

Текст по ширине блока
Здравствуйте! Есть Блок с картинкой, размер которой заранее не известен. Под картинкой лежит текст, его ширина не должна превышать ширину...

Тег input авто ширина по горизонтали в зависимости от контента
что нужно: есть тег input, в который я ввожу данные, но как сделать чтобы он был такой ширины, как контент внутри него

Ширина блока
Вообщем сверстал сайт: Начал смотреть как он выглядит на разных разрешения экрана и заметил вот такую проблему: на некоторых разрешения...

ширина блока
Всем привет! Помогите пожалуйста решить одну проблему... Есть два вложенных блока div. Дочерний блок немного шире и поэтому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru