H5页面如何进行等分布局?

本文探讨了在H5页面中如何实现非均匀等分布局的问题,包括不使用flex布局和坚持使用flex布局两种解决方案。在不使用flex布局时,建议使用div并设置为行内块,通过百分比宽度和padding来实现。而使用flex布局时,可以通过添加空白元素来实现等分且靠左对齐的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题抛出

众所周知,flex布局可以使得一行元素等分排布,但是有时候我们的需求并不是每一行的元素都是等分排布,比如应该设置成下面都样式:
在这里插入图片描述

解决思路 & 实现

一、不使用flex布局

1、弹性布局flex此时不再适用,因为弹性布局是会使得每一行都是根据div的个数n进行将每一个div都均分1/n的宽度。
2、使用div布局,且必须设置成行内块(inlne-block)的形式。因为等分1/n,所以使用百分比作为宽度,但是也注定不能使用magin去填充边距,只能使用padding,且在border-box的前提下。
3、h5页面同时需要考虑按钮中文案的长度以及屏幕的尺寸问题,应保证用户在手机上看和在ipad上的效果一致。可以使用display:table-cell;的方式去实现。

代码实现

<div class="line">
	<span class="label-container">
		<span class="label"><span class="content">1</span></span>
		<span class="label">><span class="content">2</span></span>
		<span class="label">><span class="content">3333333333</span></span>
		<span class="label">><span class="content">444444</span></span>
		<span class="label">><span class="content">555555555555555</span></span>
	</span>
</div>
.line{
	padding-left: 16px;
	.label-container{
		display: inline-block;
		box-sizing: border-box;
		width: 33.3%;
		height: 25px;
		padding:0px 16px 10px 0px;
		text-align: center;
		.label{
			position: relative;
			box-sizing: border-box;
			display: table-cell;
			/* 1%表示足够大,会撑满整个容器,这点需要留意,table-cell的方式默认会根据内容的长度而设置宽度 */
			width: 1%;
			height:32px;
			background:rgba(250,250,250,1);
			border-radius:20px;
			text-align: center;
			font-family:PingFangSC-Regular;
			font-weight:400;
			font-size:12px;
			vertical-align: middle;
			.content{
			/* 如果内容超出两行以上则以...方式省略 */
				display: -webkit-box;
				padding: 0px 10px;
				text-overflow: ellipsis;
				-webkit-line-clamp: 2;
			    /* 下面的注释是为了打包时不忽略这句代码 */				
				/*! autoprefixer: off */
				-webkit-box-orient: vertical;
				/*! autoprefixer: on */
				overflow: hidden;
			}
		} 
	}
}

二、坚持使用flex布局

1、因为弹性布局会使得元素平分这个屏幕的宽度的缘故,若还要实现每行n个,不够n个靠左对齐的效果,则需要填上空白的元素以补齐n个的要求。

代码实现

// 未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值