CSS实现多个元素在盒子内两端对齐效果


Posted in HTML / CSS onMarch 30, 2021

元素俩端对齐的排列布局在实际的开发当中随处可见,使用flex布局的--justify-content : space-between即可轻松实现,但有些场景下需要考虑兼容等问题,不得不放弃flex布局,所以我们想要实现同样的效果就需要研究排版,在网络搜索了一番答案后,发现真正简单且实质性能够解决问题的,寥寥无几,确实我在实际项目中经常碰到此类布局,所以我利用业余时间,将其原理实现分享于此,以供交流,分享

场景要求

在一个确定宽度的盒子内,将item俩端对齐排列,且不影响确定盒子的原来布局。

<div class="container">
        <ul>
            <li>12</li>
            <li>2</li>
            <li>3</li>
            <li>12</li>
            <li>2</li>
            <li>3</li>
            <li>12</li>
            <li>2</li>
            <li>3</li>
        </ul>
    </div>

假设这里我们有这么些item

* {
        margin: 0;
        padding: 0;
    }
    
    .container {
        width: 1200px;
        height: 500px;
        background-color: aqua;
        margin: 0 auto;
    }
    
    ul {
        /* 关键是元素的宽,通过margin负值移位与container重叠 */
        width: 1220px;
        margin-left: -20px;
        list-style: none;
    }
    
    ul li {
        float: left;
        /* width = (盒子宽度 - margin间距 * 一行items的个数 - 1) /  一行item的个数 */
        /* (1200px - 20 * 2) / 3 */
        width: 386.666px;
        height: 60px;
        margin: 0px 0 20px 20px;
        background-color: red;
    }

css关键在于需要我们计算下item的宽度,/* width = (盒子宽度 - margin间距 * 一行items的个数 - 1) /  一行item的个数 */ ,这里我打算一行显示三个item,那么就是(1200px - 20 * 2) / 3,为什么是一行item的个数-1来计算marign占据的宽度,三个item不应该是三个margin吗,这就是实现俩端对齐的精髓所在,试想浮动布局,一行元素在流上逐个排列,当流方向宽度不够时,元素则会折行排列,如果想让齐在一行内显示,我们确实可以通过给第三个item的margin值设置为0,使其不折行也达到了俩端对齐的显示方式,这样做确实没问题,可一旦item个数多了,且不确定的时候呢,你怎么取消一行内最后一个item的margin,显然设置margin为0的方式不是最佳方案,那么此时就可以对他的外包盒子做处理,外部盒子ul(这里我使用的是ul标签,块标签都可以)的宽度和 -margin值的设置。

为什么外部盒子的宽度是1220px

CSS实现多个元素在盒子内两端对齐效果

这是container原来的宽度

CSS实现多个元素在盒子内两端对齐效果

这是ul的宽度,是的已经大过了container,而且是右边大过去的,那此时将ul用-margin处理后,即可成为视觉上的俩端对齐

取消ul的背景颜色后,效果达成

总结

到此这篇关于CSS实现多个元素在盒子内两端对齐效果的文章就介绍到这了,更多相关CSS 元素 盒子 两端对齐内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
利用CSS3的flexbox实现水平垂直居中与三列等高布局
Sep 12 HTML / CSS
详解HTML5中的标签
Jun 19 HTML / CSS
HTML5 对各个标签的定义与规定:body的介绍
Jun 21 HTML / CSS
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
Jan 09 HTML / CSS
浅谈html5标签css3的常用样式
Oct 20 HTML / CSS
HTML5实现可缩放时钟代码
Aug 28 HTML / CSS
Canvas绘制浮动球效果的示例
Dec 29 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
Mar 19 HTML / CSS
HTML5拖拽功能实现的拼图游戏
Jul 31 HTML / CSS
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
Jul 09 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
Jul 29 HTML / CSS
HTML如何让IMG自动适应DIV容器大小的实现方法
Feb 25 HTML / CSS
Html5页面播放M4a音频文件
Html分层的box-shadow效果的示例代码
原生CSS实现文字无限轮播的通用方法
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
CSS3通过var()和calc()函数实现动画特效
CSS3实现模糊背景的三种效果示例
使用css样式设计一个简单的html登陆界面的实现
You might like
PHP图片上传代码
2013/11/04 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
根据分辩率调用不同的CSS.
2007/01/08 Javascript
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
举例讲解jQuery中可见性过滤选择器的使用
2016/04/18 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
Python中__name__的使用实例
2015/04/14 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
俄罗斯电动工具和设备购物网站:Vseinstrumenti.ru
2020/11/12 全球购物
城建学院毕业生自荐信
2014/01/31 职场文书
人事专员的职责
2014/02/26 职场文书
库房管理员岗位职责
2015/02/12 职场文书
走近毛泽东观后感
2015/06/04 职场文书
公司保洁员管理制度
2015/08/04 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python