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实现跳动的动画效果
Sep 12 HTML / CSS
CSS3属性选择符介绍
Oct 17 HTML / CSS
纯CSS3发光分享按钮的实现教程
Sep 06 HTML / CSS
CSS3 :not()选择器实现最后一行li去除某种css样式
Oct 19 HTML / CSS
css3实现文字扫光渐变动画效果的示例
Nov 07 HTML / CSS
CSS3 边框效果
Nov 04 HTML / CSS
html5 application cache遇到的严重问题
Dec 26 HTML / CSS
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
Jan 09 HTML / CSS
html5 音乐播放器 audio 标签使用概述
Jul 15 HTML / CSS
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
May 08 HTML / CSS
详解canvas绘图时遇到的跨域问题
Mar 22 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
Dec 19 HTML / CSS
Html5页面播放M4a音频文件
Html分层的box-shadow效果的示例代码
原生CSS实现文字无限轮播的通用方法
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
CSS3通过var()和calc()函数实现动画特效
CSS3实现模糊背景的三种效果示例
使用css样式设计一个简单的html登陆界面的实现
You might like
简单的用PHP编写的导航条程序
2006/10/09 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
php文件读取方法实例分析
2015/06/20 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
babel基本使用详解
2017/02/17 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
python清除函数占用的内存方法
2018/06/25 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
西班牙高科技产品购物网站:MejorDeseo
2019/09/08 全球购物
史学专业毕业生求职信
2014/05/09 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
表彰大会新闻稿
2015/07/17 职场文书
100句人生哲理语录集锦:强者征服今天,懒汉坐等明天
2019/10/18 职场文书