实现九宫格效果图如下
九宫格布局效果图
公共样式

 div{
      width: 300px;
      height: 300px;
  }
    ul{
      padding: 0;
      width: 100%;
      height: 100%;
  }
   li{    
      list-style: none;
      text-align: center;
      line-height: 100px;
      margin: 3px;
      background-color: #243F49;
      color: white;
      border: 1px solid white;
      font-weight: bolder;
  }
<div>
  <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
    <li>9</li>
  </ul>
</div>

1.grid网格布局

gridtemplatecolumns 用于定义每一列的宽度gridtemplate-rows 用于定义一行高度gridgap设置网格的行间距、列间距

ul{
      padding: 0;
      width: 100%;
      height: 100%;
      /*设置grid网格布局*/
      display: grid;
      /*设置三行高度都为100px;*/
      grid-template-rows:100px 100px 100px ;
       /*设置三行宽度都为100px;*/
      grid-template-columns: 100px 100px 100px;
      置网格的行间距、列间距都为3px
      /*grid-gap: 3px;*/
  }

2.flex布局

计算每个li的宽度高度,总的宽、高度为300px,那么每个li的宽高就为300px/3=100px 但是由于每个li设置margin为3px那么:
每个li的宽度= 100px – (marginleft + marginrright)=100-(3+3) = 94px 我们每个li的宽度设置为94px即可
每个li的高度=100px – (margintop + marginbottom) = 100-6 = 94px 我们每个li的高度设置为94px即可
确定了总的div宽高度和每个li的宽高度后用flex布局进行换行
当然了,先确定三个盒子的高、宽度 *3+ 间距 *2 *3个= 总宽/高度这样的计算顺序更快。

  ul{
      padding: 0;
      width: 100%;
      height: 100%;
      /*设置布局方式为flex布局*/
      display: flex;
      /*换行*/
      flex-wrap: wrap;
  }
  li{
      /*固定设置每个li的宽度和高度*/
      width: 94px;
      height: 94px;
      margin: 3px;
      list-style: none;
      text-align: center;
      line-height: 100px;
      background-color: #243F49;
      color: white;
      border: 1px solid white;
      font-weight: bolder;
  }

3.float浮动定位

给总的div设置一个固定的宽高,计算总的高、宽度 = 三个盒子3 + 间距2 *3个再设置每个li固定的宽高,利用float换行,再给父元素overflowhidden进项清除浮动定位
每个li的宽高度为94px,margin为3px ,div的总高度、宽度=943+32*3=300px。

  ul{
      padding: 0;
      width: 100%;
      height: 100%;
      /*清除浮动*/
      overflow: hidden;    
  }
  li{
      /*固定设置每个li的宽度和高度*/
      width: 94px;
      height: 94px;
      /*第三方法:浮动定位进行换行*/
      float: left;
      margin: 3px;
      list-style: none;
      text-align: center;
      line-height: 100px;
      background-color: #243F49;
      color: white;
      font-weight: bolder;
  }

4.inlineblock+letterspacing属性/fontsize:0

前面两种一致,先计算宽高度、设置每个li的宽高度,再将li使用dispalyinlineblock换行,再用letterspacing属性的负值进行减少字符之间的空白

letter-spacing属性是增加(值为正)或减少(值为负)字符间距字符间的空白);

ul{
      padding: 0;
      width: 100%;
      height: 100%;
      /*减少字符间的空白*/
      letter-spacing: -5px;/*这里使用font-size:0;也可*/
   }
   li{
      /*设置每个li的固定宽度和高度*/
      width: 94px;
      height: 94px;
      display: inline-block;
      margin: 3px;
      list-style: none;
      text-align: center;
      line-height: 100px;
      background-color: #243F49;
      color: white;
      font-weight: bolder;
  }

5.table布局

将父元素设置为dispalytable布局形式,使得元素表格形式来显示,再设置单元格边框间距。再设置相应的表格行形式display: tablerow;和单元格形式display: tablecell

  <style>
ul{
    width: 300px;
    height: 300px;
    /*元素作为块级表格显示  padding失效*/
    display: table;
    /*设置相邻单元格边框间距*/
    border-spacing: 5px;
}
li{
    list-style: none;
    text-align: center;
    background-color: #243F49;
    color: white;
    font-weight: bolder;
    /*此元素会作为一个表格行来显示 margin和padding都失效*/
    display: table-row;
}
div{
    line-height: 90px;
    text-align: center;
    /*元素单元格形式来显示  Margin失效*/
    display: table-cell;
}
 <ul>
    <li>
      <div>1</div>
      <div>2</div>
      <div>3</div>
    </li>
    <li>
      <div>4</div>
      <div>5</div>
      <div>6</div>
    </li>
    <li>
      <div>7</div>
      <div>8</div>
      <div>9</div>
    </li>
  </ul>

效果图
效果图

原文地址:https://blog.csdn.net/qq_50487248/article/details/130272780

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_26256.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注