我正试图抓住flex,并努力创造我追求的东西.
我想做什么
>全屏容器
>两个div元素,一个右对齐,宽度为640px,另一个左对齐,占用剩余空间
发生了什么
我的元素在屏幕的中心彼此叠加显示.
码
div.flex { display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: space-around; align-items: stretch; height: 100vh; } div.hero { background-size: cover; background-position: center bottom; position: relative; height: 100vh; width: 100%; margin: auto; } div.timeline { width: 640px; margin: auto; } div.header { position: absolute; top: 50%; text-align: center; width: 100%; /* color: #fff; */ -ms-transform: translate(0,-50%); /* IE 9 */ -webkit-transform: translate(0,-50%); /* Safari */ transform: translate(0,-50%); -ms-transform: translate(0,calc(-50% - 66px)); /* IE 9 */ -webkit-transform: translate(0,calc(-50% - 66px)); /* Safari */ transform: translate(0,calc(-50% - 66px)); }
<div class="flex"> <div class="hero"> <!-- Header --> <div class="header"> <h1>Title</h1> <h2 class="subtitle">Subtitle</h2> </div> <!-- End header --> <!-- Timeline --> <div class="timeline"> <ul class="timeline-both-side"> <li> <div class="border-line"></div> <div class="timeline-description"> <p>Quisque ac laoreet purus,eu dapibus ligula. Mauris nec tincidunt mi,eget finibus sem. Morbi viverra malesuada lobortis. Suspendisse sed augue luctus ex molestie convallis.</p> </div> </li> <li class="opposite-side"> <div class="border-line"></div> <div class="timeline-description"> <p>Lorem ipsum dolor sit amet,consectetur adipiscing elit. Sed sed erat consectetur,tempor odio sit amet,euismod sapien.</p> </div> </li> <li> <div class="border-line"></div> <div class="timeline-description"> <p>Lorem ipsum dolor sit amet,euismod sapien.</p> </div> </li> <li class="opposite-side"> <div class="border-line"></div> <div class="timeline-description"> <p>Quisque ac laoreet purus,eget finibus sem. Morbi viverra malesuada lobortis. Suspendisse sed augue luctus ex molestie convallis.</p> </div> </li> <li> <div class="border-line"></div> <div class="timeline-description"> <p>Quisque ac laoreet purus,eget finibus sem. Morbi viverra malesuada lobortis. Suspendisse sed augue luctus ex molestie convallis.</p> </div> </li> </ul> </div> <!-- End timeline --> </div> </div>
题
我如何使用flex将这两个元素(100vh)连续排在下面?
+------------------------------------------+ |.flex | |+-------------------------+ +------------+| ||.hero | |.timeline || || | | || || | | || |+-------------------------+ +------------+| +------------------------------------------+
解决方法
简单本身.
body { margin: 0; } .parent { height: 100vh; display: flex; } .hero { flex: 1; background: red; } .timeline { flex: 0 0 640px; background: green; }
<div class="parent"> <div class="hero"></div> <div class="timeline"></div> </div>