如何使用flexbox实现复杂,响应迅速的HTML布局?
发布时间:2020-12-15 02:13:47 所属栏目:百科 来源:网络整理
导读:我已经研究过Flexbox以实现响应式布局,如下图所示.不幸的是,我仍然没有想出如何实现如图1所示的桌面布局,在小于414像素的视口上将其自身重新排列为图2. 图1(桌面视口) 图2(移动视口) (缩放版) 点击此处查看image in original size 我的代码到目前为止: .fle
我已经研究过Flexbox以实现响应式布局,如下图所示.不幸的是,我仍然没有想出如何实现如图1所示的桌面布局,在小于414像素的视口上将其自身重新排列为图2.
图1(桌面视口) 图2(移动视口)
点击此处查看image in original size 我的代码到目前为止: .flexbox { display: -webkit-box; display: -ms-flexbox; display: -webkit-flex; display: flex; flex-wrap: wrap; width: 100%; margin: 0; flex-direction: row; } .content-flexbox.one { flex-basis: calc(66% - 1rem); order: 2; } .content-flexbox.two { flex-basis: calc(30% - 1rem); order: 1; } .content-flexbox.three { order: 3; } .content-flexbox.four { order: 4; } .content-flexbox { margin: 1rem; -webkit-box-flex: 1; -webkit-flex: 1; -ms-flex: 1; flex: 1; } @media only screen and (max-width: 959px) { .flexbox { -flex-direction: column; padding-top: 1rem; } .content-flexbox { margin: 1rem; flex: 1; flex-basis: 100%; } .content-flexbox.one { flex-basis: 100%; order: 1; } .content-flexbox.two { flex-basis: 100%; order: 2; } } <div class="flexbox"> <div class="content-flexbox one"> <h1 class="posttitle">Lorem ipsum</h1> <h2 class="subtitle">dolor sit amet</h2> </div> <div class="content-flexbox two"> <img src="http://placehold.it/300x300" /> </div> <div class="content-flexbox three"> <span>Lorem ipsum dolor</span> </div> <div id="container-voting" class="content-flexbox four"> <div class="inner-container set"> <span>Lorem ipsum dolor</span> </div> <div class="inner-container get"> <span>Lorem ipsum dolor</span> </div> </div> </div> 我的问题 这对Flexbox来说甚至可能吗?有更好的选择更适合这种布局吗? 解决方法
虽然这个问题明确要求使用flexbox方法,但还有另一种方法可以使用简单的浮点数来实现它.
媒体查询允许在小于414px宽的视口上按所需顺序重新排列元素: .wrap { background: #d0d0d0; padding: 1%; } .wrap:after { content: ''; display: block; clear: both; } .el { float: left; margin: 1%; } .el1 { width: 31.33%; padding-bottom: 31.33%; background: #FF7676; } .el2 { float: right; width: 64.66%; padding-bottom: 14.66%; background: #C2FF76; } .el3 { width: 31.33%; padding-bottom: 14.66%; background: #FF9BF7; } .el4 { width: 31.33%; padding-bottom: 6.33%; background: #9BA4FF; } @media (max-width: 414px) { .el2,.el4 { width: 98%; padding-bottom: 31.33%; } .el1,.el3 { width: 48%; padding-bottom: 48%; } } <div class="wrap"> <div class="el el2"></div> <div class="el el1"></div> <div class="el el3"></div> <div class="el el4"></div> <div class="el el4"></div> </div> 请注意,我在此示例中使用了padding-bottom来保持元素的宽高比(this answer中的更多信息). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |