美文网首页
日常布局css

日常布局css

作者: 嗯哼_2982 | 来源:发表于2019-11-07 17:52 被阅读0次

一、如何实现子元素左右等高布局

** html部分 **
<div class="parent" >
    <div class="left" ">
        <p>left</p>
    </div>  
    <div class="center">
        <p>center</p>
        <p>center</p>
    </div>          
    <div class="right">
        <p>right</p>
    </div>        
</div>
左右等高布局
  1. grid布局 最简单
.parent{
    display: grid; // 必须
    grid-auto-flow: column; // 必须
    grid-gap:20px; // 子元素的间距
}
  1. flex布局
    flex中的伸缩项目默认都拉伸为父元素的高度,也实现了等高效果
.parent{
    display: flex;
}
.left,.center,.right{
    flex: 1;
}
.center{
    margin: 0 20px;
}

3.table布局
table元素中的table-cell元素默认就是等高的

.parent{
    display: table;
    width: 100%;
    table-layout: fixed;
}
.left,.centerWrap,.right{
    display: table-cell;
}
.center{
    margin: 0 20px;
}

二、如何实现一个最大的正方形

用 padding-bottom 撑开边距就可以了。

.child {
    width:100%;
    padding-bottom: 100%;
    background: #333;
}

四:CSS盒子居中的几种方法

1.第一种
利用margin,div1的宽减去div2的宽就是div2margin-left的数值:(100-40)/2=30
div1的高减去div2的高就是div2margin-top的数值:(100-40)/2=30

<style type="text/css">
    .div1{  width: 100px; height: 100px; border: 1px solid #000000;} 
    .div2{ width:40px ; height: 40px; background-color: green;}
    .div22{
         margin-left: 30px;margin-top: 30px;
       }
 </style>
 <div class="div1">
     <div class="div2 div22">
     </div>
 </div>

2.第二种
利用css的 position属性,把div2相对于div1的top、left都设置为50%,然后再用margin-top设置为div2的高度的负一半拉回来,用marg-left设置为宽度的负一半拉回来,css如下设置

<html>
    <head>
        <meta charset="UTF-8">
        <title>demo</title>
    </head>
    <body>
        <style type="text/css">
            .div1{  width: 100px; height: 100px; border: 1px solid #000000;} 
            .div2{ width:40px ; height: 40px; background-color: green;}
 
            .div11{
                position: relative;
            }
            .div22{
                position: absolute;top:50%;left: 50%;margin-top: -20px;margin-left: -20px;
            }
        </style>
 
        <div class="div1 div11">
            <div class="div2 div22">
 
            </div>
        </div>
 
    </body>
</html>
  1. 第三种
    还是用css的position属性,如下的html
<html>
    <head>
        <meta charset="UTF-8">
        <title>demo</title>
    </head>
    <body>
        <style type="text/css">
            .div1{  width: 100px; height: 100px; border: 1px solid #000000;} 
            .div2{ width:40px ; height: 40px; background-color: green;}
 
            .div11{
                position: relative;
            }
            .div22{
                position: absolute;margin:auto; top: 0;left: 0;right: 0;bottom: 0;
            }
        </style>
 
        <div class="div1 div11">
            <div class="div2 div22">
 
            </div>
        </div>
 
    </body>
</html>
  1. 第四种
    第四种
    利用css3的新增属性table-cell, vertical-align:middle;
<html>
    <head>
        <meta charset="UTF-8">
        <title>demo</title>
    </head>
    <body>
        <style type="text/css">
            .div1{  width: 100px; height: 100px; border: 1px solid #000000;} 
            .div2{ width:40px ; height: 40px; background-color: green;}
 
            .div11{
                display: table-cell;vertical-align: middle;
            }
            .div22{
                margin: auto;
            }
        </style>
 
        <div class="div1 div11">
            <div class="div2 div22">
            </div>
        </div>
 
    </body>
</html
  1. 第五种
<html>
    <head>
        <meta charset="UTF-8">
        <title>demo</title>
    </head>
    <body>
        <style type="text/css">
            .div1{  width: 100px; height: 100px; border: 1px solid #000000;} 
            .div2{ width:40px ; background-color: green;}
 
            .div11{
                display: table-cell;vertical-align: middle;
            }
            .div22{
                margin: auto;
            }
        </style>
 
        <div class="div1 div11">
            <div class="div2 div22">
               div居中方法
            </div>
        </div>
 
    </body>
</html>
  1. 第六种:利用flexbox布局
    直接在父元素上使用flexbox的布局
<html>
<head>
    <meta charset="UTF-8">
    <title>demo</title>
    <style type="text/css">
        .div1 {
            width: 100px;
            height: 100px;
            border: 1px solid #000000;
        }
 
        .div2 {
            height: 40px;
            width: 40px;
            background-color: green;
        }
 
        .div11 {
            display: flex;
            /*!*flex-direction: column;*!可写可不写*/
            justify-content: center;
            align-items: center;
        }
 
    </style>
</head>
<body>
 
 
<div class="div1 div11">
    <div class="div2 div22">
 
    </div>
</div>
 
</body>
</html>
  1. 第七种
    利用transform的属性,注意子绝父相定位
    缺点:需要支持Html5
<html>
<head>
    <meta charset="UTF-8">
    <title>demo</title>
    <style type="text/css">
        body {
            margin: 100px auto;
            position: relative;
        }
 
        .div1 {
            width: 100px;
            height: 100px;
            border: 1px solid #000000;
            background-color: red;
        }
 
        .div2 {
            height: 40px;
            width: 40px;
            background-color: green;
        }
 
        .center {
            position: absolute;
            top: 50%;
            left: 50%;
            -ms-transform: translate(-50%, -50%);
            -moz-transform: translate(-50%, -50%);
            -o-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
        }
 
    </style>
</head>
<body>
 
 
<div class="div1 center">
    我是外部盒子
    <div class="div2 center">
        我要居中
    </div>
</div>
</body>
</html>
  1. 第七种
    两者都要固定定位,不常用
    缺点:需要设置position属性,网页复杂时容易扰乱页面布局,而且只是元素的起始位置居中
<html>
<head>
    <meta charset="UTF-8">
    <title>demo</title>
    <style type="text/css">
 
 
        .div1 {
            width: 100px;
            height: 100px;
            border: 1px solid #000000;
            background-color: red;
            position: relative;
        }
 
        .div2 {
            height: 40px;
            width: 40px;
            background-color: green;
            margin:30px 30px;
 
        }
 
        .center{
            position: fixed;
            left: 50%;
        }
 
    </style>
</head>
<body>
 
 
<div class="div1 center">
   
    <div class="div2 center">
        我要居中
    </div>
</div>
</body>
</html>

相关文章

  • 日常布局css

    一、如何实现子元素左右等高布局 grid布局 最简单 flex布局flex中的伸缩项目默认都拉伸为父元素的高度,也...

  • 2020-05-24

    日常知识点总结(CSS篇): 1、弹性盒子布局: 对于弹性盒子布局的容器,使用“display:flex”声明使用...

  • css居中布局的几种方法

    在我们日常开发的时候,经常会使用到css 的居中布局,不论是移动端还是我们的pc端,今天总结归纳几种css居中布局...

  • 文章收藏

    CSS布局 CSS布局方案整理

  • css

    css基础css选择器css常见样式1css常见样式2CSS布局上CSS布局下flex布局塔防小游戏flex布局青...

  • css flex布局详解

    css flex布局详解 css flex布局详解1css flex布局详解2

  • 经典CSS布局:双飞翼和圣杯布局

    圣杯布局 HTML CSS 双飞翼布局 HTML CSS Flex布局 HTML和圣杯布局一样CSS

  • 圣杯布局2019-12-18

    圣杯布局 css html 双飞翼布局 css html

  • ##深入学习CSS布局系列(一)布局常用属性

    @(CSS)[CSS, 布局] 深入学习CSS布局系列(一)布局常用属性 一直感觉自己对CSS的各个属性很了解,可...

  • 块状元素和内联元素、盒子模型

    div+css布局 表格布局 table布局 div+css布局 浮动布局 块状元素和行内元素 display:...

网友评论

      本文标题:日常布局css

      本文链接:https://www.haomeiwen.com/subject/zewmbctx.html