前端基础---布局

一、布局核心:盒模型

盒模型的一些基础知识

盒子在网页中呈现的宽度Width=width+padding-left+padding-right+border-left+border-right+margin-left+margin-right

padding:内边距 有效内容和边框的距离

               当padding发生改变时盒子大小也会发生改变此时为了保证不改变盒子的大小,需要手动内减width和height

margin:外边距 两个盒子的距离 可以改变盒子的位置

border:边框  (宽度 px 边形 solid 实线 dotted 圆点 dashed 虚线 none 没有边框)

全局选择器

虽热创建盒子时并没有设置外边距,但是在浏览器中运行时会默认设置外边距,如果此时想要将盒子的外边距清除便可使用全局选择器

格式:

*{

}

具体如下:

练习:向右箭头

这里运用了border的相关知识,当border像素过大时,就会产生立体的图形,此时将盒子的宽高设置为0,并将boder-left设置为喜欢的颜色,将其它三个border设置为transpraent即可

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>day03-向右的箭头</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 0;
            height: 0;
            border-left: 100px solid #ffb409;
            border-right: 100px solid transparent;
            border-top: 100px solid transparent;
            border-bottom: 100px solid transparent;
            margin: 100px auto;
        }
    </style>
</head>
<body>
<div class="box"></div>
</body>
</html>

结果如下:

盒模型问题

BFC 块级元素的一个规则

外边距重叠 BFC ---> 导致父盒子随着子盒子走 父盒子拥有子盒子的上外边距属性

1:解决:

(1) 父盒子设置上边框 border-top:1px solid orange

(2)父盒子设置内边距 padding-top:1px

(3)overflow:hidden 溢出的隐藏

2:避免:父盒子内边距 而不是 子盒子的外边距 优先: 内边距 > 外边距 

水平居中

外边距auto

margin : 10px 四面外边距值一样

margin: 10px 20px  上下外边距为10px  左右外边距为20px

margin: 10px 20px 30px 上外边距10px 左右 20px 下 30px

margin: 10px 20px 30px 40px 上右下左

盒子水平居中 margin: 0 auto;   /*上下0 左右auto 浏览器自己去算 */

练习:盒模型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>$美少女战士$</title>
    <style>
       
        * {
            margin: 0;
            padding: 0;
        }
        .father {
            width: 500px;
            height: 500px;
            background-color: orange;
           /* !*撑大盒子*!
            padding-top: 100px;
            padding-left: 200px;*/

            /* 方法一border-top:1px solid orange;*/
           /* 方法二padding-top:1px;*/
            overflow:hidden /* 方法三*/
        }
        .son {
            width:300px;
            height: 300px;
            background-color: skyblue;
            margin-top: 100px;
            margin-left: 200px;
           /* padding: 75px;*/
        }
        .sunZi {
            width: 150px;
            height:150px;
            background-color: deeppink;
            margin: 0  auto; 
        }
    </style>
</head>
<body>
<div class="father">
    <div class="son">
        <div class="sunZi">
        </div>
    </div>
</div>
</body>
</html>

 外边距塌陷

取最大外边距 50px 避免就好了

二、布局第二块:浮动

浮动是为了让块级元素并排

伪类选择器

语法:

第一个孩子 标签名、类名:first-child { }

标签名、类名:last-child { }

2n+1 奇数  2n  偶数

标签名、类名:nth-child(2n+1) { }

浮动元素-》脱标-》不在界面-》底下盒子会占领并排盒子的位置

 父盒子高度塌陷

(1) 设定高度 不实际

(2) 父元素加overflow:hidden 有问题 会把有用的内容都隐藏掉

(3) 前辈 清除浮动影响 clear:both / left /right 属性 + 对象 (标签) 没有实现样式和结构相分离

(4) 前辈 clear:both / left /right 能不能创造一个元素(标签)不属于文档树 又起到标签效果

样式上css代码创造标签 --》 不属于文档树 又有标签效果 ---》伪元素

.clearFix::after {

content: ''; !*如果没有文本内容就空开*!

clear: both;

line-height: 0; !*IE *!

display: block; }

伪元素

默认是一个行内元素

选择器::after{ }

选择器::before { }

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>day03-浮动02</title>
    <style>
.box5{
            width: 200px;
            height: 200px;
            /*浮动属性float*/
            /*float: left;*/
            background-color:darkmagenta;
            margin: 100px auto;
        }
        .box5::before{
            content: '我是前span标签';/*必须存在*/
            padding: 20px;
            background-color: #666666;
            color:deeppink;
            display: block;
        }
        .box5::after{
            content: '我是后span标签';/*必须存在*/
            padding: 20px;
            background-color: #666666;
            color:deeppink;
            display: block;
        }
        span{
            padding: 20px;
            background-color: #666666;
            color:deeppink;
        }
    </style>
</head>
<body>
<div class="box5">
    我是div,你是?
</div>
<p></p>



</body>
</html>

结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值