首页 > 其他分享 >css列数自适应的grid布局

css列数自适应的grid布局

时间:2023-03-29 13:44:22浏览次数:48  
标签:column 标签 100px grid 列数 div main css

近期做项目,遇到了一点样式上的问题,理论上通过直接改 / 嵌套一层来解决比较容易,但实际上,数据结构没我想象中的简单具体例子如下:

demo

期望效果:               实际效果:(flex布局)         实际效果配合伪类(.main::after { width: 100px;content: '' } )

        

 当前效果产生的原因(以vue项目为例):循环生成的标签,内部有v-if, v-else判断(即当前两种不同样式的标签处于同一层级)

可以看到,实际效果配合伪类(flex布局)还是和期望效果存在差距, 为什么,看代码层级,当前p标签和div标签层级属于同一级,通过给main下的最后标签设置伪类,并不能解决7、8区域的样式问题。

 

因此, flex布局用不了,暂时无法区分p标签值为8的标签和div标签

 

找了下,有个grid布局,在main标签的css下设置  grid-template-columns: repeat(auto-fill, 100px);

此时的效果,所有标签都按照100px来划分区块大小

 

 

这种也不满足需求,如何让div独立出来占满整行呢

看了下,在grid(网格)布局下有 grid-column-start 和 grid-column-end 属性,给 div 设置 grid-column-start: 1; grid-column-end: span 3;  符合条件

但是,grid-column-end: span 3;  这个3表示的是结束位置在第三列,又不满足列数自适应的效果

有没有可能让他撑满整行呢,有!  设置 grid-column-end: -1;  这样相当于开始位置位于网格的最前面,结束位置为网格的最后面,就能撑满

整体代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    .main {
        width: 350px;
        outline: 1px solid;
        display: grid;
        justify-content: space-between;
        grid-template-columns: repeat(auto-fill, 100px);
    }
    .main>p {
        width: 100px;
        height: 100px;
        margin-bottom: 10px;
        background-color: lightgreen;
    } 
    .main>div {
        grid-column-start: 1;
        grid-column-end: span 3;
        height: 100px;
        width: 100%;
        margin-bottom: 10px;
        background: #ccc;
    } 
</style>
<body>
    <div class="main">
        <p>1</p>
        <p>2</p>
        <p>3</p>
        <p>4</p>
        <p>5</p>
        <p>6</p>
        <p>7</p>
        <p>8</p>
        <div>1234</div>
        <p>11</p>
        <p>12</p>
        <p>13</p>
        <p>14</p>
        <p>15</p>
        <p>16</p>
        <p>17</p>
        <p>18</p>
    </div>
</body>
</html>
View Code

 

 总结: 当前问题出现的原因为,后台返回的数据内,同一层级下既有标题又有表单,标题占全行, 表单固定宽度适应屏幕,就会存在如上图flex布局实际效果图,最后一行会在中间有空余,单纯让他左对齐,网上方法很多,但都不适用于当前这种结构,原想法是拿到div的上一个p标签,给他单独设置样式(比如flex:1),但试了半天,没能拿到...有更好的解决方案 / 其他问题,欢迎评论补充。

标签:column,标签,100px,grid,列数,div,main,css
From: https://www.cnblogs.com/workJiang/p/17268401.html

相关文章

  • css设置超过固定长度以省略号显示
    1.设置一行内超过规定长度以省略号显示代码:.box1{background-color:orange;/*设置规定长度*/width:100px;/*......
  • CSS3-页面布局基础一
    一、CSS概要web前端开发者最最注的内容是三个:HTML、CSS与JavaScript,他们分别在不同方面发挥自己的作用,HTML实现页面结构,CSS完成页面的表现与风格,JavaScript实现一些客户端......
  • 彻底弄懂css中单位px和em,rem的区别
    国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? PX特点1.IE无法调整那些使用px作为单位的字体大小;2.国外的大部分网站能......
  • CSS overflow 属性
    实例设置overflow属性:div{width:150px;height:150px;overflow:scroll;}浏览器支持所有主流浏览器都支持overflow属性。注释:任何的版本的InternetExp......
  • 第八篇 css - 布局 - 【 浮动布局 + 定位布局 + flex 伸缩盒布局 + grid 网格布局 】
    普通流文档流流式布局分为1、普通流2、定位流3、浮动流不同流内的块级元素和行内元素的布局方式不同布局方式用FC格式化上下文来命名......
  • 第三篇 css - 优先级 - 【 级联 和 继承 】
    概述CSS样式优先级分为两大类1、级联2、继承级联CSS级联规则决定了样式冲突时胜出的样式,这三条规则按照优先级从高到低分别为1、样式表来源......
  • 第四篇 css - 基础 - 颜色
    颜色基本概述1、颜色颜色是指不能透过其他颜色的混合调配而得出的“基本色”,以不同比例将原色混合可以产生出其它的新颜色。由于人类肉眼有三种不同颜色的感......
  • 第六篇 css - 样式 - 【 字体样式 + 文本样式 】
    字体样式1、color2、font-size3、font-family4、font-style5、font-weight字体样式解析1、font-family该属性用于设置字体1、网页中常用的字体有......
  • 第五篇 css - 单位值
    css单位css单位主要分为1、相对单位2、绝对单位相对单位相对单位,是相对于当前元素的字号font-size或者视口viewport尺寸。1、em:1em与当前元素......
  • 伪元素和CSS类
    伪元素可以结合CSS类: p.article:first-letter{color:#ff0000;}<pclass="article">文章段落</p>https://www.lekaowang.com/cjhjs/zx/ksdg/上面的例子会使所有class......