HTML и CSS - вопросы макета (с использованием grid & flexbox)

Codepen: https://codepen.io/pprunesquallor/pen/qKxvrX

Я начинаю играть с сеткой и flexbox.

Я хотел бы высоту html , body { height : 100% ; } body { display : grid ; grid-template-columns : 1fr ; grid-template-areas : «header» «main» «footer» ; align-items : stretch ; } header { grid-area : header ; дисплей : flex ; flex-direction : column ; background-color : известь ; } header > h1 { margin : 0 ; цвет фона : коричневый ; } nav { display : flex ; flex-direction : row ; background-color : orange ; } main { grid-area : main ; дисплей : flex ; flex-direction : row ; background-color : red ; } article { background-color : yellow ; } в сторону { ширина : 50% ; переполнение : авто ; переполнение-y : прокрутка ; background-color : серый ; } нижний колонтитул { сетка-область : нижний колонтитул ; background-color : pink ; } элемент (желтый) должен быть только до тех пор, пока требуется текст (поэтому в этом случае примерно половина времени), и поэтому <html lang = "en" > <body> <header> <h1 id = "title" > Заголовок заголовка </ h1> <nav> <form style = " display : inline " action = "http://google.com" target = "_blank" > <button> Ссылка 1 </ button> </ form> < form style = " display : inline " action = "http://google.com" target = "_blank" > <button> Ссылка 2 </ button> </ form> <form style = " display : inline " action = " http://google.com " target = " _blank " > <button> Ссылка 3 </ button> </ form> </ nav> </ header> <main id = " main " > <article id = " info " > <h2> Статья заголовка </ h2> "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco labis nisi ut aliquip ex ea commodo consequat. DUIs Aut Е <a ID = "link" HREF = "" цель = "_blank"> Ссылка </a> irure Dolor в reprehenderit в voluptate велит еззе cillum Dolor e eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat не имеет отношения к делу, зажженный в culpa qui officia deserunt mollit anim id est laborum ». <br> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean leo urna, porta ac interdum placerat, rhoncus vel lectus. Aenean consectetur condimentum augue fringilla elementum. Mauris vel fermentum nisi. Donec nec condimentum sapien. Donec feugiat followat est ac hendrerit. Phasellus nec turpis ex. Vestibulum malesuada leo mauris. Proin posuere ultricies mauris, в varius lorem laoreet sed. Nam congue, arcu sed feugiat scelerisque, massa turpis convallis ante, eu lobortis orci leo и др. Vivamus ut aliquet massa. <br> Чат инвестировать беременными, страх футбол макияжа занимает много. Самый большой недвижимости nibh Фелис, морковь всегда легко потребительский компьютер. Потеря баскетболистов. Laoreet любого элемента любой авиакомпании. Nibh никакого страха долины и не закончил ни, дайвинг malesuada диам. Северная Корея также не всегда нечисто. Даже арахисовое или шлюз, tincidunt на разработчика траура. Клиническая колчан со стрелами плавающих лабораторной ферментации. Колчан домашней работы нужно кислород, ядовитые стрелы ломтики. Но игроки и уродливые помидоры выходные днем. В настоящее время в Соединенных Штатах, а не пропаганда футбола транспортных средств, транспортные средства варьировали алкоголь. Это самый большой элемент области колчана, цена горшка. Бюро , но теперь границы Готовятся. Eu потребительские стрелки, производство и транспортировка. </ Статьи> <сторона> <h3> Помимо </ h3> Каждый уровень холестерин выходных некрасиво элемент недвижимости. Lorem стерилизовать пленку, слой пленки с помощью моих стрел. Тепловое время боль, много моего шлюзе пленки слоя. Вся юбка коробки пить много. Живые или ненавидят бананы вход сени. Proin сидеть Амет accumsan эроса, hendrerit Дознание магна. Для того , что и ненавидел, и быть готовы к congue tincidunt. Suspendisse кто - то поднимается из правоохранительных органов, consectetuer adipiscing turpis ид, конечно, ни. Vulputate горшок или игроки долина, дети хотят газа инвестировать. Я очень рад , нужно ненависть к переправить на долину и лев. Класс начал Employment поворот на наш брак, за himenaeos. Даже область салат колчан может ненавидеть, телевидение коробки уикэнд. Филиал был в Vulputate. Дуй это не футбол или футбол , прежде чем кто - либо берет на себя транспортные средства. Райс падение салат соусом, а просто мягкий уход об этом. Бюро время домашнего задания для футбола. Перекрестные футбольные разработчики арахисового шлюза в необходимости бесплатно грустные и осмотр достопримечательностей. Клинические разработчики морковь лев батареи. Меценат переменного тока imperdiet магна. Релейная разработчиков ultricies актив. Но для реального льва в свободном активу, установите морковь выходные дуги. Тем не менее, основная дуга футбол подушка. Integer Varius rutrum Орси, laoreet nibh, и великий человек в. Домашнее задание Элит , который был разогрев воздействие. Pellentesque в диам Дуй Lorem сидеть Амет vehicula. Но на этот раз он или политики. Кросс домашнего задание ориентированного, салат и принимает его, это просто отличный футбол, Vulputate арахисового соуса рецепты на все. Nulla. Oastea сейчас, функциональный слой за слоем один. Целые разработчики футболистов. Sed ultrices venenatis Massa, но пусть самый большой, и масса колчана. Тем не менее, период времени , что боль подушка. Донец rutrum Амет, consectetur sollicitudin и визуально на основании челюстей которой, перед любым человеком eleifend пзиз aliquam turpis. </ Сторона> </ главной> <колонтитул> нижнего колонтитул </ нижний колонтитул> </ тело> </ HTML> элемент (серый) должно быть одинаковой высоты в зависимости от высоты издела, и прокручивать.

Заранее спасибо!!

aside
<aside>
  <div class="aside__inner">
    ...content...
  </div>
</aside>

html,css,css3,flexbox,css-grid,

5

Ответов: 3


5 принят
+50

Есть ли способ сделать это только с помощью CSS?

Вы можете использовать позиционирование.

HTML: оберните содержимое в дополнительный контейнерaside { position: relative; } .aside__inner { position: absolute; }

article

CSS:

grid-template-rows: auto min-content auto

codepen

  • Если вам нужен верхний и нижний колонтитулы для расширения, чтобы articleон был только высок, как его содержимое, вы можете добавить bodyего min-width.
  • Я также предлагаю использовать widthвместо asideнаaside

html,
body {
  height: 100%;
}

body {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-areas: "header" "main" "footer";
  align-items: stretch;
  /* added */
  grid-template-rows: auto min-content auto;
}

header {
  grid-area: header;
  display: flex;
  flex-direction: column;
  background-color: lime;
}

header>h1 {
  margin: 0;
  background-color: brown;
}

nav {
  display: flex;
  flex-direction: row;
  background-color: orange;
}

main {
  grid-area: main;
  display: flex;
  flex-direction: row;
  background-color: red;
}

article {
  background-color: yellow;
}

aside {
  width: 50%;
  overflow: auto;
  overflow-y: scroll;
  background-color: grey;
  position: relative;
}

.aside__inner {
  position: absolute;
}

footer {
  grid-area: footer;
  background-color: pink;
}
<html lang="en">

<body>
  <header>
    <h1 id="title">Header Title</h1>
    <nav>
      <form style="display: inline" action="http://google.com" target="_blank">
        <button>Link 1</button>
      </form>
      <form style="display: inline" action="http://google.com" target="_blank">
        <button>Link 2</button>
      </form>
      <form style="display: inline" action="http://google.com" target="_blank">
        <button>Link 3</button>
      </form>
    </nav>
  </header>
  <main id="main">
    <article id="info">
      <h2>Article Title</h2>
      "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
      <a
        id="link" href="" target="_blank">Link</a> irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
        <br> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean leo urna, porta ac interdum placerat, rhoncus vel lectus. Aenean consectetur condimentum augue fringilla elementum. Mauris vel fermentum nisi. Donec nec condimentum sapien. Donec
        feugiat consequat est ac hendrerit. Phasellus nec turpis ex. Vestibulum malesuada leo mauris. Proin posuere ultricies mauris, at varius lorem laoreet sed. Nam congue, arcu sed feugiat scelerisque, massa turpis convallis ante, eu lobortis orci
        leo et ex. Vivamus ut aliquet massa.
        <br> Curabitur placerat gravida est, eu rutrum metus suscipit sit amet. Mauris placerat nibh felis, sit amet semper dolor facilisis ornare. Proin ut ultrices nisl. Aliquam laoreet porttitor ex quis elementum. Nullam nibh metus, convallis nec lectus
        vel, sollicitudin malesuada diam. Quisque nec semper turpis. Etiam vel eros porta, tincidunt nisl at, luctus elit. Fusce tristique nulla pharetra sagittis fermentum. Duis eget pharetra dolor, sagittis venenatis purus. Sed volutpat nisl et turpis
        consectetur blandit. In nunc eros, vehicula eu augue non, vehicula varius arcu. Mauris ut est elementum, tempus tellus pharetra, pretium urna. Nunc hendrerit finibus enim at efficitur. Vestibulum sagittis dolor et vehicula feugiat.
    </article>
    <aside>
      <div class="aside__inner">
        <h3>Aside</h3>
        Quisque volutpat turpis eu turpis elementum placerat. Integer auctor venenatis turpis, sit amet accumsan mi sagittis a. In scelerisque tempor dolor, sit amet mattis mi accumsan porta. Integer lacinia lobortis est sit amet bibendum. Vivamus faucibus aliquet
        odio vel vestibulum. Proin sit amet accumsan eros, hendrerit posuere magna. Ut et odio ac velit congue tincidunt. Suspendisse quis ex egestas, facilisis turpis id, cursus neque. Donec vulputate urna vel nisl convallis, pellentesque egestas felis
        placerat. Curabitur sit amet odio eget ante porttitor convallis et tempus leo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tellus sem, pharetra ut odio id, lobortis volutpat sem. In dictum
        at eros at vulputate. Morbi vel dui non erat vehicula suscipit quis eu ante. Proin condimentum sem dui, at mollis justo sollicitudin quis. Duis hendrerit tempus felis.
        <br> Morbi eget libero tristique eros porta tincidunt in et eros. Fusce tincidunt sit amet leo eu gravida. Maecenas ac imperdiet magna. Nullam tincidunt ultricies dignissim. Sed placerat leo in libero dignissim, sit amet volutpat arcu posuere.
        Sed consectetur eu arcu eu pulvinar. Integer varius rutrum orci, ac maximus nibh laoreet in. Duis laoreet elit quis erat fermentum luctus. Aliquam sollicitudin id odio sit amet vehicula. Sed tempor id quam vel lobortis.
        <br> Duis accumsan, sem et suscipit dictum, enim magna ornare justo, condimentum vulputate eros felis at ex. Nulla facilisi. Nunc porttitor semper est, eget accumsan ex accumsan quis. Integer tincidunt dignissim nisl. Sed ultrices venenatis massa,
        sed maximus massa pharetra ac. Sed tempus tempus dolor id pulvinar. Donec rutrum, diam et condimentum sollicitudin, ex nulla faucibus quam, quis eleifend risus ante aliquam turpis.
      </div>
    </aside>
  </main>
  <footer>Footer</footer>
</body>

</html>


0

Будет ли это делать то, что вы хотите? https://codepen.io/anon/pen/OEZMwV

Я просто добавил следующую JS, добавил идентификатор <aside>и изменил отображение идентификатора #info.

$("#aside").css({
    'height': ($("#info").height() + 'px')
});

0

Вот ручка, в которой я работаю.

https://codepen.io/anon/pen/jKKvpb

В принципе, то, что вы просите, невозможно с учетом предоставленного вами HTML / CSS. Строки сетки автоматически сортируются по высоте самого высокого элемента в столбце. Невозможно захватить естественную высоту <article>элемента из-за использования flex css <main>.

Обходной путь заключается в добавлении обертки <div>вокруг <article>элемента. Я сделал это с помощью jQuery, потому что я ленив, но вы, вероятно, должны добавить его в HTML. Я добавил несколько css, чтобы совместить цвета div.

Вот мой код:

//wrap the article in a div 
jQuery('#info').wrap('<div id="article-wrap"></div>');

//a function that gets the height of the article and sets the aside to the height of the article
function sizeMe() {
    var height= jQuery('#info').height();
    jQuery('#aside').css('height', height);
}

//run the function on page load
sizeMe();

//to make it responsive run the function if the page is resized.
jQuery(window).resize( function(){
     sizeMe();
});
HTML, CSS, CSS3, Flexbox, CSS сетки,
Похожие вопросы
Яндекс.Метрика