CSS网格布局

这篇具有很好参考价值的文章主要介绍了CSS网格布局。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CSS 网格布局(CSS Grid)是 CSS 中的一种二维布局系统,可以非常方便地进行网页布局。网格布局的工作原理是将页面划分成一个个网格,然后规定内容放在哪个网格中,从而实现复杂的布局结构。

基本用法

使用网格布局主要分为以下几个步骤:
 

1. 定义容器:

.container {
  display: grid; 
}

2. 设置列和行:

.container {
  grid-template-columns: 100px 100px 100px;
  grid-template-rows: 50px 50px;
}

3. 定义子元素放在哪个网格区域:

.item-1 {
  grid-column-start: 1;
  grid-column-end: 3;
  grid-row-start: 1; 
  grid-row-end: 2;
}

css网格属性

这里只列举几个 更多可以参考:CSS 网格布局 | 菜鸟教程

  •  grid-template-columns/grid-template-rows: 定义列和行
  •  grid-column-gap/grid-row-gap: 设置列间距和行间距

     eg. 创建一个网格容器,容器中创建4个列,列间距为10px,行间距为20px

    CSS网格布局,css,前端,原生js
    代码:

    <!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>
        #grid-container {
            width: 800px;
            height: 500px;
            border: 2px solid pink;
    
            display: grid;/*创建一个网格容器*/
            grid-template-columns: auto auto auto auto; /*网格容器中创建四个列*/
            grid-column-gap:10px;  /*列间距*/
            grid-row-gap: 20px; /*行间距*/
        }
        #grid-container >div{
            height: 200px;
            background-color: skyblue;
        }
    </style>
    <body>
        <div id="grid-container">
        </div>
    </body>
    <script>
        const gridContainer = document.getElementById('grid-container')  
        for(let i=0;i<7;i++){
            const item = document.createElement('div');
            gridContainer.appendChild(item)
        }
    </script>
    </html>
  • grid-auto-flow: 设置内容自动放置流向
    语法:grid-auto-flow: row | column | row dense | column dense;
    默认值是row,即"先行后列"的顺序放置元素。
    eg: 这时元素会先放置在第一列,当第一列放不下时再流转到第二列。
    #grid-container {
            width: 800px;
            height: 500px;
            border: 2px solid pink;
    
            display: grid;/*创建一个网格容器*/
            grid-template-columns: auto auto auto auto; /*网格容器中创建四个列*/
            grid-column-gap:10px;  /*列间距*/
            grid-row-gap: 20px; /*行间距*/
            grid-auto-flow: column;/* 设置流向为列 */
        }
    CSS网格布局,css,前端,原生js
     row dense和column dense会尽可能紧密填充,尽量占满网格。所以grid-auto-flow属性可以用来控制浏览器自动布局时的内容流向,非常有用。常见的设置有:
    - row - 先行后列(默认)
    - column - 先列后行 
    - row dense - 先行后列,并尽量占满网格
    - column dense - 先列后行,并尽量占满网格掌握该属性可以更好地控制网格中内容的放置顺序
  • justify-items/align-items: 设置内容项在单元格内的排列方式

    justify-items 和 align-items 属性可以控制网格中的内容项在其网格单元格内的对齐方式。justify-items 属性设置内容项在网格单元格内的水平对齐方式,语法如下:

    justify-items: start | end | center | stretch;

    例如`justify-items: center;` 表示将内容项水平居中对齐。align-items 属性设置内容项在网格单元格内的垂直对齐方式,语法如下:

    align-items: start | end | center | stretch;

    例如 align-items: end; 表示内容项垂直向下对齐。默认值都是stretch,即内容项会拉伸填满单元格。示例:
     

    .container {
      justify-items: center;
      align-items: end;
    } 

    这会使所有内容项水平居中、垂直朝下对齐。 

  • grid-auto-columns grid-auto-rows 属性可以设置浏览器自动创建的列和行的大小。当网格中的元素多于单元格时,浏览器会自动生成新的行和列。我们可以通过这两个属性来设置自动生成行/列的大小。语法如下:

    .container {
      grid-auto-columns: 100px; 
      grid-auto-rows: 50px;
    }

    这将自动生成的列宽设置为100px,行高设置为50px。也可以设置为百分比或其他单位。如果不指定,浏览器完全根据内容自动设定大小。这样可以实现以下效果:- 控制额外网格的行高和列宽
    实现网格中所有行高列宽均匀一致示例:

    .container {
      display: grid;
      grid-template-columns: repeat(3, 100px);
      grid-template-rows: repeat(2, 50px);
    
      grid-auto-columns: 100px; 
      grid-auto-rows: 50px; 
    }

    上面代码会使自动生成的行和列的大小与指定网格一致。这两个属性给网格布局提供了更大的灵活性和可控性。 (已编辑) 

使用网格布局实现瀑布流

<!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>
    #grid-container {
        width: 800px;
        height: 500px;
        border: 2px solid pink;
        column-count: 3;  /*定义容器有2列*/
        column-gap: 10px; /*定义列与列之间的间隙为10px*/
    }
    .item{
        display: grid; /*创建一个容器*/
        grid-template-rows: 1fr auto; /*设置 grid 容器的行高模板(row tracks template)为: 第一行的高度为 1fr (fraction 等分) 第二行的高度为 auto*/
        margin-bottom: 10px; 
        height: 10em; 
    }
    .item:nth-child(2n) {
         height: 12em; 
        } 
    .item:nth-child(3n) { 
        height: 14em; 
    } 
    .item:nth-child(4n) { 
        height: 16em; 
    }
    .item:nth-child(5n) { 
        height: 18em; 
    }
    .item:nth-child(6n) { 
        height: 20em; 
    } 
    .item:nth-child(7n) { 
        height: 22em; 
    } 
    .item:nth-child(8n) { 
        height: 24em; 
    }
</style>
<body>
    <div id="grid-container">
    </div>
</body>
<script>
    const gridContainer = document.getElementById('grid-container')  
    for(let i=0;i<7;i++){
        const item = document.createElement('div');
        const textNode = document.createTextNode(`${i}`)
        item.appendChild(textNode)
        item.classList.add("item"); 
        item.style.backgroundImage = `url(https://picsum.photos/800/600?random=${i})`
        gridContainer.appendChild(item)

    }
</script>
</html>

效果图:

CSS网格布局,css,前端,原生js

 文章来源地址https://www.toymoban.com/news/detail-698348.html

到了这里,关于CSS网格布局的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网格布局应用css

    常用属性总结 父盒子 属性名 属性值 简介 grid-template-columns 具体数值 / fr / repeat(auto-fill, minmax(100px, 1fr)) 1.几个具体数值代表几行,2.几个fr代表几行,3.没有固定宽度最小100px直到放不下换行,也可以使用auto-fit有同样效果 grid-template-rows 具体数值 / fr 1.几个具体数值代表几行,

    2024年02月11日
    浏览(35)
  • 如何使用CSS实现一个响应式网格布局?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月12日
    浏览(42)
  • 【CSS Grid网格布局】常用属性,示例代码解读

    grid-template-columns/grid-template-rows:用于定义网格的列和行的大小和数量。可以指定具体的尺寸值(如px、em等),也可以使用fr单位表示剩余空间的比例分配。 grid-column-gap/grid-row-gap:用于定义网格的列间距和行间距。可以使用具体的尺寸值或百分比。 grid-template-areas:用于定义

    2024年02月12日
    浏览(45)
  • 前端知识——css 之 flex 布局

    🔥🔥🔥更多知识,欢迎访问我的个人博客:Nan-ying’s Blog 长久以来,CSS 布局中唯一可靠且跨浏览器兼容的布局工具只有 floats 和 positioning 。 但是这两种方法本身存在很大的局限性, 并且他们用于布局实在是无奈之举。 一些布局上的痛点无法解决: 比如在父内容里面垂直居

    2024年02月07日
    浏览(54)
  • 前端学习——css盒子模型、css3新特性、伪类、布局0711TODO

    样式还是得具体使用才能理解,不然会忘记也理解不透彻;还有定位,元素溢出,浮动,布局水平垂直对齐: css3新特性 1过渡 2 动画 3 2D、3D转换 伪类 三种定位方式 弹性布局/栅格布局

    2024年02月15日
    浏览(62)
  • 【前端】CSS(引入方式+选择器+常用元素属性+盒模型+弹性布局)

    层叠样式表(Cascading Style Sheets) 对元素位置的排版进行精确控制,实现结构和样式的分离 CSS 控制页面的展示效果 HTML决定页面的结构 选择器+{一条/N条声明} 选择器:要修改谁 声明:具体要修改什么内容。声明的属性是键值对,用分号区分,键和值用: 通常情况下,把style放

    2024年04月15日
    浏览(53)
  • CSS3 转换,死磕原理,写给前端开发的小程序布局指南

    height: 100px; border: 1px solid red; background-color: #cccccc; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); } 2D 缩放 - scale() scale() 方法用于改变元素的尺寸。 根据给定的高度和宽度。 scale(x) 或者 scale(x,y) 一个参数时,第二个参数默认和第一个一样。 可取值 -  默认为1

    2024年03月26日
    浏览(53)
  • 仿chatGPT或chatPDF的前端界面布局,css实现对话聊天布局代码,响应式左右分栏布局(附完整源代码)

    chatPDF或者chatGPT的界面挺简洁的,就是一个左侧的列表以及右侧的对话列表,现在使用css实现这样的布局 充分运用了flex布局方式实现,左右分栏,以及对话形式展示效果 下面是效果图:   在手机设备看就隐藏左侧,右侧100%适应  下面就是html和css的布局代码  

    2023年04月22日
    浏览(52)
  • Web前端开发技术(第3版) 实训5 项目16 DIV+CSS页面布局

    实验课本61页 根据要求修改注释和链接的css文件就可以实现三种页面的呈现 更改具体内容和颜色代码就可以实现课本上的页面。 主代码: !DOCTYPE html html     head         meta charset=\\\"utf-8\\\" /         title/title         link href=\\\"layout_1.css\\\" rel=\\\"stylesheet\\\" type=\\\"text/css\\\"/     /he

    2024年02月06日
    浏览(47)
  • [前端系列第2弹]CSS入门教程:从零开始学习Web页面的样式和布局

    在这篇文章中,我将介绍CSS的基本概念、语法、选择器、属性和值,以及如何使用它们来定义Web页面的外观和布局。还将给一些简单而实用的例子,可以跟着我一步一步地编写自己的CSS样式表。 目录 一、什么是CSS 二、CSS的语法 三、CSS的选择器 四、CSS的属性和值 (一)颜色

    2024年02月13日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包