首页 > 其他分享 >CSS流动布局-页面自适应

CSS流动布局-页面自适应

时间:2024-02-29 11:58:01浏览次数:29  
标签:direction end 流动 流向 start inline margin CSS 页面

项目中经常会碰到页面自适应的问题,例如:商城的列表展示、分类列表展示等页面,如下:
在这里插入图片描述
该页面会随着页面的放大缩小而随之发生变化,解决方法:display: flex;配合子元素的动态宽度来实现,子元素的宽度 = (总宽 - 自身的margin) / 每行的数量即可。

.box{
    border: 1px solid red;
    width: 80%;
    display: flex;
    direction: ltr; 
    flex-wrap: wrap;
    padding: 2px;
    .innerBox{
        width: calc((100% - 12px) / 3);  /* 宽度 = (总宽 - 自身的margin) / 每行3个 */
        height: 50px;
        border-radius: 10px;
        margin: 2px;
        background: #ccc;
    }
}

在这里插入图片描述
css中有一个“流”的概念,这种布局自然自动,像水流一样。正常情况下,html的元素布局是从左往右依次排列,块级元素从上往下排列,我们所说的脱离文档流也就是该元素从流中漂浮起来,与之前的元素不在同一个层级而形成的不占位效果。

有了流这个概念后,我们可以通过更改流的水平流向来更改元素的排列方向。
direction属性用来设置文本、表列水平溢出的方向。 rtl 表示从右到左, ltr 表示从左到右。
在这里插入图片描述
direction属性介绍:https://developer.mozilla.org/zh-CN/docs/Web/CSS/direction

对应上面的flex布局,通过设置文档的水平流向来更改文档的起始位置:

 direction: rtl; 

在这里插入图片描述


如果是行内元素,只需要更改水平流向即可实现元素的左右对齐。
在这里插入图片描述

.container{
    width: 348px;
    border: 1px solid red;
    direction: rtl;  /*文档水平流向 从右流向:rtl 从左流向:ltr*/
    padding: 10px 10px 0px 0px;
    >button{
        margin-inline-end: 10px;
        margin-block-end : 10px;
    }
}

margin-inline-end用于定义元素的逻辑内联结束边距。

这里需要注意,margin-inline-end是受direction属性影响的,如果文档的水平流向为右向左,那么
margin-inline-end相当于margin-right
margin-inline-start相当于margin-left
如果文档的水平流向为左向右,那么
margin-inline-end相当于margin-left
margin-inline-start相当于margin-right

direction: ltr;  /*文档水平流向 从右流向:rtl 从左流向:ltr*/
/*....*/
    >button{
       margin-inline-start: 10px;
       margin-block-end : 10px;
    }

在这里插入图片描述
margin的逻辑属性是围绕inline、block、start、end展开的
inline、block表示方向,inline表示水平(左右),block表示垂直(上下)
start、end表示起止方位,start表示开始位置(左),end表示结束位置(右)
上面的几种逻辑属性都会受到direction属性影响,使用时需要注意。

margin、padding都可以通过inline、block、start、end组合变为css逻辑属性。
padding-inline-start: 20px;margin-inline-start: 20px; ............


流的应用除了更改文档的水平流以外,还可以用来做对称布局,例如微信聊天页,更改direction的水平流向,即可实现微信的自身和对方的聊天气泡定位。

<!-- 微信聊天页 -->
<div class="wx_chat">
     <div class="wx_chunk" v-for="(item,index) in 3">
         <div class="wx_image">头像</div><span>用户昵称</span>
     </div>
     
     <div class="my_wx_chunk">
         <div class="wx_image">我的头像</div><span>用户昵称</span>
     </div>
</div>
<!-- 微信聊天页end -->
.wx_chat{
    width: 300px;
    border: 1px solid cyan;
    margin: 20px;
    .wx_chunk{
        display: flex;
        .wx_image{
        width: 50px;
        height: 50px;
        text-align: center;
        line-height: 50px;
        border: 1px solid red;
        }
    }
    .my_wx_chunk{
        direction: rtl;  /* 更改水平流向为向右 */
        display: flex;
        .wx_image{
        width: 50px;
        height: 50px;
        font-size: 12px;
        text-align: center;
        line-height: 50px;
        border: 1px solid red;
        }
    }
}

效果如下:
在这里插入图片描述


 

标签:direction,end,流动,流向,start,inline,margin,CSS,页面
From: https://www.cnblogs.com/wangtiantian/p/18043167

相关文章

  • CSS3有哪些新特性
    CSS3引入了很多新特性,比如:1.选择器:CSS3引入了新的选择器,如伪类选择器、伪元素选择器等,使得选择元素更加灵活和精确。2.边框圆角:CSS3允许通过 border-radius 属性为元素的边框添加圆角,创建圆形、椭圆形或具有不同角度的矩形边框。3.盒阴影:使用 box-shadow 属性,可以为元素......
  • CSS知识点总结
    盒模型宽度:width高度:height边框:border圆角:border-radius外边距:margin内边距:padding阴影效果:box-shadow背景:background背景颜色:background-color背景图片:background-image背景位置:background-position背景大小:background-size背景(图片)是......
  • uniapp开发小程序H5页面顶部导航栏navigationBar如何隐藏?三种解决办法
    uniapp开发小程序H5页面顶部导航栏navigationBar如何隐藏?三种解决办法:https://blog.csdn.net/qq_37860634/article/details/131226906?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170917383916800225594144%2522%252C%2522scm%2522%253A%252220140713.130102334.pc......
  • 【CSS】滚动条样式的优化
    【转】https://zhuanlan.zhihu.com/p/110029332?utm_id=0前言优化后的滚动条会提亮我们的网站页面。 例如:CSS-TRICKS这个网站如果采用的是浏览器默认的滚动条,不进行优化,页面会显得很不搭。所以该网站的滚动条样式优化如下:html::-webkit-scrollbar{width:30px;......
  • IOS内嵌H5从第三方页面返回之后无法点击
    前言苹果手机左滑返回上一页,但是我们开发的app出现跳转支付宝想返回充值页,手滑返回上一页之后出现无法点击本页按钮的情况。我们的测试同学很笃定是我h5界面的问题,一直催着我改,在经过我们IOS同学的帮助下,发现他在webView里面写的代码导致的冲突。[webViewevaluateJavaScri......
  • css 渐变 透明
    透明也算一个颜色百分比表示的是位置 线性渐变background:linear-gradient(blue,pink);background:linear-gradient(toright,blue,pink);background:linear-gradient(70deg,blue,pink);background:linear-gradient(red,yellow,blue,orange);background:......
  • 点击页面按钮退出企业微信应用
    closeWindow(){if(document.addEventListener){document.addEventListener('WeixinJSBridgeReady',function(){WeixinJSBridge.call('closeWindow');parent.WeixinJSBridge.call(......
  • javaweb01-html&css
    HTML-CSS基础介绍html:超文本标记语言学习标签css:层叠样式表学习样式基础标签&样式-新浪新闻biao标题标题排版(标签介绍)标题标签h1、h2水平线标签hr图片标签img超链接a标题样式css引入方式:行内样式:内嵌样式:外联样式:<link颜色表示形式:关键字:redrbg表示法:#rgb(......
  • 2.22 页面制作
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>浏览审批卡</title><style>.reSet{background-color:#4CAF50;color:white;bord......
  • 2.23页面制作3
    !DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>合理性审查</title><style>.reSet{background-color:#4CAF50;color:white;border:......