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 media queries + jQuery实现响应式导航
Sep 30 HTML / CSS
css3弹性盒模型(Flexbox)详细介绍
Oct 08 HTML / CSS
用CSS3绘制三角形的简单方法
Jul 17 HTML / CSS
CSS3制作漂亮的照片墙的实现代码
Jun 08 HTML / CSS
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
Aug 25 HTML / CSS
详解CSS3中强大的filter(滤镜)属性
Jun 29 HTML / CSS
HTML高亮关键字的实现代码
Oct 22 HTML / CSS
HTML5实现简单图片上传所遇到的问题及解决办法
Jan 20 HTML / CSS
详解HTML5中表单验证的8种方法介绍
Dec 19 HTML / CSS
详解canvas绘图时遇到的跨域问题
Mar 22 HTML / CSS
html5 canvas的绘制文本自动换行的示例代码
Sep 17 HTML / CSS
bootstrapv4轮播图去除两侧阴影及线框的方法
Feb 15 HTML / CSS
Html5页面播放M4a音频文件
Html分层的box-shadow效果的示例代码
原生CSS实现文字无限轮播的通用方法
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
CSS3通过var()和calc()函数实现动画特效
CSS3实现模糊背景的三种效果示例
使用css样式设计一个简单的html登陆界面的实现
You might like
浅谈电磁辐射对健康的影响
2021/03/01 无线电
php正则
2006/07/07 PHP
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
PHP使用file_get_content设置头信息的方法
2016/02/14 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
php use和include区别总结
2019/10/13 PHP
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
理解javascript模块化
2016/03/28 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
基于js 本地存储(详解)
2017/08/16 Javascript
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
用Django写天气预报查询网站
2018/10/21 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
python如何从文件读取数据及解析
2019/09/19 Python
Python使用pymysql模块操作mysql增删改查实例分析
2019/12/19 Python
谈谈python垃圾回收机制
2020/09/27 Python
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
如何通过jdbc调用存储过程
2012/04/19 面试题
出纳的岗位职责
2013/11/09 职场文书
机械制造与自动化应届生求职信
2013/11/16 职场文书
黄金酒广告词
2014/03/21 职场文书
学校读书活动总结
2014/06/30 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
民事起诉书范本
2015/05/19 职场文书
龙猫观后感
2015/06/09 职场文书
Python anaconda安装库命令详解
2021/10/16 Python