Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.08.2018, 12:59
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Подгонка последней строки на всю ширину контейнера
<div class="container">
    <div class="item">item-1</div>
    <div class="item item-list">
        <div class="elem">elem-1</div>
        <div class="elem">elem-2</div>
        <div class="elem">elem-3</div>
    </div>
    <div class="item item-filler">item-2</div>
    <div class="item">item-3</div>
</div>
Ширина контейнера фиксированная, ширина остальных элементов равна их содержимому, НО ширина элемента с классом "item-filler" должна быть такой, чтобы элемент заполнил собой всё оставшееся пространство в строке. Так же она должна иметь минимальное значение. Желательно чтобы элементы были инлайн-блочными и т.п. (не чистый инлайн).

Можно ли сделать это средствами CSS? Картинка прилагается
Изображения:
Тип файла: png css.png (4.1 Кб, 7 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 07.08.2018, 13:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Shitbox2,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <style type="text/css">

   .container{
        display: flex;
        flex-wrap: wrap;
        width: 200px;
        background-color: #696969;
   }
   .item-filler{
       min-width: 0;
       flex: 1;

   }
   .item{
       background-color: #FF0000;
       margin: 5px;
       display: inline-block;
   }
   .elem {
       background-color: #FF0000;
   }
   .item.item-list {
       background-color: #696969;
       min-width: 95%;
       display: flex;
       justify-content: space-between;
       flex: 1;
   }

  </style>

</head>

<body>


<div class="container">
    <div class="item">item-1</div>
    <div class="item item-list">
        <div class="elem">elem-1</div>
        <div class="elem">elem-2</div>
        <div class="elem">elem-3</div>
    </div>
    <div class="item item-filler">item-2</div>
    <div class="item">item-3</div>
</div>

</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 07.08.2018, 14:39
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

<div class="container">
	<div class="item">item-1</div>
	<div class="item item-list">
		<div class="elem">elem-1</div>
		<div class="elem">elem-2</div>
		<div class="elem">elem-3elem-3-elem-1ele</div>
		<div class="elem">elem-3-elem-1</div>
		<div class="elem">elem-3-elem-2</div>
		<div class="elem">elem-3-elem-3-elem-3-elem-1</div>
		<div class="elem">elem-4-elem-1</div>
		<div class="elem">elem-5</div>
	</div>
	<div class="item item-filler">item-2</div>
	<div class="item">item-3</div>
</div>
<style>

	.container {
		width: 600px;
		box-shadow: 0 0 0 2px, inset 0 0 0 1em white;
		background: gray;
		display: flex;
		align-items: flex-start;
		align-content: flex-start;
		flex-wrap: wrap;
		resize: both;
		overflow: auto;
	}
	
	.container > * {
		background: gray;
		padding: 2em;
		box-shadow: inset 0 0 0 1em white;
	}
	
	.item-list {
		display: contents;
	}
	
	.item-filler {
		flex: 1;
	}
	
	.container > *  > * {
		background: red;
		padding: .8em;
		margin: 1.2em;
	}
	
</style>
Ответить с цитированием
  #4 (permalink)  
Старый 07.08.2018, 15:55
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Как быстро! Правда, не всё работает)

У Рони элементы не заполняют строку. Т.е. при любой ширине будет 3 элемента в строке.

У Маллейса всё почти как надо, но если ширину поставить 400px, то всё ломается и последняя строка остается не заполненной.

Вообще, тоже пробовал флексбокс, но как-то не получилось добиться желаемого.
Ответить с цитированием
  #5 (permalink)  
Старый 07.08.2018, 17:42
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Всё дело в `display: contents`. Поставил его в свою флексбоксовскою верстку и всё заработало. Хорошая штука, жаль Майкрософт поднасрал, как обычно. Без `display: contents` реально?
Ответить с цитированием
  #6 (permalink)  
Старый 07.08.2018, 18:29
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Shitbox2
Без `display: contents` реально?
Если только поменять немного HTML...
<input type="range" min="0" max="1600" value="400" oninput="document.querySelector('.container').style.width = this.value + 'px';">
<div class="container">
	<div class="item">item-1</div>
	<div class="elem">elem-1</div>
	<div class="elem">elem-2</div>
	<div class="elem">elem-3elem-3-elem-1ele</div>
	<div class="elem">elem-3-elem-1</div>
	<div class="elem">elem-3-elem-2</div>
	<div class="elem">elem-3-elem-3-elem-3-elem-1</div>
	<div class="elem">elem-4-elem-1</div>
	<div class="elem">elem-5</div>
	<div class="last-group">
		<div class="item item-filler">item-2</div>
		<div class="item">item-3</div>
	</div>
</div>
<style>

.container {
	min-width: 250px;
	width: 400px;
	box-shadow: 0 0 0 2px, inset 0 0 0 1em white;
	background: gray;
	display: flex;
	align-items: flex-start;
	align-content: flex-start;
	flex-wrap: wrap;
}

.container > .elem {
	background: red;
	padding: .8em;
	margin: 1.2em;
}

.container > .item, .container > .last-group > .item {
	background: gray;
	padding: 2em;
	box-shadow: inset 0 0 0 1em white;
}

.container > .last-group {
	display: flex;
	flex: 1;
}

.container > .last-group > .item-filler {
	flex: 1;
}
</style>
Ответить с цитированием
  #7 (permalink)  
Старый 07.08.2018, 19:01
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Сообщение от Malleys Посмотреть сообщение
Если только поменять немного HTML...
Вот-вот. Именно так у меня сейчас и сделано. JS получается более костыльный. Одно дело менять список в отдельном контейнере, другое - в общей куче

P.S. Проголосуйте и напишите им пару ласковых https://wpdev.uservoice.com/forums/2...s-from-css-dis

Последний раз редактировалось Shitbox2, 07.08.2018 в 19:06.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
bxSlider: карусель на всю ширину с центрированием текущего слайдера spo Общие вопросы Javascript 2 28.09.2015 18:46
Почему страница html при распечатке печатается не на всю ширину, где - то на треть. EVOSadnru6 (X)HTML/CSS 0 09.10.2013 10:13
растянуть на всю ширину malkoff (X)HTML/CSS 0 20.10.2011 18:22