前端的初学日记(CSS篇)Day2

盒模型(box model)

盒模型
css将页面中的所有元素都设置为了一个矩形的盒子,将元素设置为矩形的盒子后,对页面的布局,就变成将不同的盒子摆放到不同的位置,每一个盒子都有以下几个部分组成:
内容区:content
边框:border
内边距:padding
外边距:margin

内容区(content)

内容区(content):元素中的所有子元素和文本内容都在内容区中排列,内容区的大小用width和height两个属性来设置。
width:设置内容区的宽度
height:设置内容区的高度

.box1{
            width:200px;
            height:200px;
            background-color:#bfa;
            }

边框(border)

边框(border):边框属于盒子边缘,边框里边属于盒子内部,出了边框都是盒子的外部,边框的大小会影响整个盒子的大小。
要设置边框,需要至少设置三个样式
边框的高度border-width
边框的颜色:border-color
边框的样式:border-style
border-width有默认值,用来指定四个方向的边框的宽度
值的情况:四个值:上 右 下 左
三个值:上 左右 下
两个值:上下 左右
一个值:上下左右
除了border-width还有一组 border-xxx-width (xxx可以是top right bottom left) 用来指定某一个边的宽度。同理border-color也有border-xxx-color。
border-color用来指定边框的颜色,同样可以分别指定四个边的边框,规则同上。border-color也可以不写,如果省略则自动使用颜色值black。
border-style指定边框的样式 默认值是none,表示没有边框。
solid表示实线 dotted点状虚线 dashed虚线 double双线
border简写属性 通过该属性可以同时设置边框所有的相关样式,并且没有顺序要求。
例:border:solid 10px orange;
除了border以外还有四个border-xxx(border-top/right/bottom/left)
例:border-top:10px solid red;
如果只想解决一个
例:border-right:none;

内边距(padding)

Padding:内容区和边框之间的距离是内边距,一共有四个方向的内边距(Padding-top/right/bottom/left)
内边距的设置会影响盒子的大小,背景颜色会延伸到内边距上。
一个盒子的可见框的大小,由内容区、内边距和边框共同决定。所以在计算盒子大小时,需要将这三个区域加到一起计算。
padding:内边距的简写属性,可以同时指定四个方向的内边距,规则和border-width一样
例:

  <style>
    .box1{
      width:200px;
      height:200px;
      background-color:#bfa;
      border:10px orange solid;
      padding:10px;
    }
    .inner{
      width:100%;
        height:100%;
        background-color:yellow;
    }
  </style>
</head>
<body>
<div class="box1">
  <div class="inner"></div>
</div>
</body>

外边距(margin)

margin:不会影响盒子可见框的大小,但是外边距会影响盒子的位置。一共有四个方向的外边距:margin-top/right/bottom/left
margin-top:上外边距 设置一个正值,元素会向下移动
margin-left:左外边距,设置一个正值元素会向右移
元素在页面中按照自左向右的顺序排列的,所以默认情况下如果我们设置的左和上边距则会移元素自身,而设置下和右边距会移动其他元素。

<style>
    .box1{
      width:200px;
      height:200px;
      background-color:#bfa;
      border:10px orange solid;
      margin-bottom:50px;
    }
    .box2{
      width:200px;
      height:200px;
        background-color:yellow;
    }
  </style>
</head>
<body>
<div class="box1"></div>
  <div class="box2"></div>
</body>

margin-bottom:下边距设置一个正值,下边的元素会向下移
margin-left:左外边距,设置一个正值,元素会向右移动
margin:也可以设置负值,如果是负值,则元素会向相反的方向移动
margin-right:默认值下设置不会产生任何效果
margin的简写属性
margin可以同时设置四个方向的外边距,用法和padding一样
例·:margin:100px;
margin会影响盒子实际占用空间的大小来改变位置


盒子的水平布局

元素在其父元素中水平方向的位置可以由以下几个属性共同决定
margin-left border-left padding-left width padding-right border-right margin-right
一个元素在其父元素中,水平布局必须满足以下的等式:
margin-left + border-left + padding-left + width + padding-right + border-right + margin-right=其父元素内容的宽度(必须满足)
如果计算结果等式不成立,则称为过度约束,则等式会自动调整。
调整情况:如果七个值没有auto的情况,则浏览器会自动调整margin-right以使等式满足。这七个值中有三个可以设置auto:width/margin-left/margin-right
如果一个值为auto:则会自动调整为auto的那个值以使等式成立
如果将一个宽度和一个外边距设置为auto,则宽度会调整到最大
如果三个都是auto 则外边距都是0,宽度最大
如果将两个外边距设置为auto,宽度固定值,则会将外边距设置为相同的值,所以我们经常利用这个特点来是一个元素在其父元素中水平居中
例:

width:xxxpx;
margin:0 auto;
<style>
    .outer{
      width:800px;
      height:200px;
      border:10px solid red;
    }
    .inner{
      width:200px;
      height:200px;
      background-color:#bfa;
      margin:0 auto;
    }
  </style>
</head>
<body>
<div class="outer">
  <div class="inner"> </div>
</div>
</body>

垂直方向的布局

默认情况下父元素的高度会被内容撑开,子元素在父元素的内容区中排列,如果子元素的大小超过了父元素,则子元素会从父元素里溢出,可使用overflow属性。
使用overflow属性来设置父元素如何处理一处的子元素
可选值:
visible:默认值 子元素会从父元素中溢出,在父元素的外部位置显示
hidden:溢出的内容将会被裁剪,不会显示
scroll:生成两个滚动条,通过滚动条来查看完整的内容
auto:根据需要生成滚动条
overflow-x 单独处理水平方向 overflow-y 单独处理垂直方向


外边距的折叠

相等的垂直方向的外边距会发生重叠现象

兄弟元素

兄弟元素间的相邻垂直外边距会取两者之间的较大值(正值),特殊情况如果相邻的外边距一正一负,取两者的和。如果相邻的外边距都是负值,则取两者中绝对值较大的
兄弟元素之间的外边距的重叠,对于开发是有利的,所以我们不需要进行处理,
需要进行处理的话例:

.box1{background-color:#bfa;
margin-bottom:100px;}
.box2{background-color:orange;
margin-top:100px;}
父子元素

父子元素间相邻外边距,子元素会传递给父元素(上外边距),父子外边距的折叠会影响到页面的布局,必须进行处理 (1不相邻 2不使用外边距)

默认样式

通常情况下浏览器会为元素设置一些默认样式,默认样式的存在会影响到页面布局,通常情况下,编写网页时,必须要去除浏览器的默认样式(pc端页面)
(点击F12 查找elements——computed可以直接查看)
list-style:none;去除项目符号


重置样式表

重置样式表,专门用来对付浏览器的样式进行重置,直接去除浏览器的默认样式(reset.css)
利用外部文件进行导入

html,body,div,span,applet,object,iframe,
h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,
abbr,acronym,address,big,cite,code,del,
dfn,em,img,ins,kbd,q,s,samp,small,strike,
strong,sub,sup,tt,var,b,u,i,center,
dl,dt,dd,ol,ul,li,
fieldest,form,label,legend,
table,caption,tbody,tfoot,thead,tr,th,td,
article,aside,canvas,details,embed,
figure,figcaption,footer,header,hgroup,
menu,nav,output,ruby,section,summary,
time,mark,audio,video{
  margin:0;
  padding:0;
  border:0;
  font-size:100%;
  font:inherit;
  vertical-align:baseline;
}
article,aside,details,figcaption,figure,
footer,header,hgroup,menu,nav,section{
  display:block;
}
body{
  line-height:1;
}
ol,ul{
  list-style:none;
}
blockquote,q{
  quotes:none;
}
blockquote:before,blockquote:after,
q:before,q:after{
  content:'';
  content:none;
}
table{
  border-collapse:collapse;
  border-spacing:0;
}

可以练习图片列表、京东底部导航条等

盒模型的大小

默认情况下,盒子的可见框大小由内容区,内边距和边框共同决定
box-sizing用来设置盒子尺寸的计算方式(设置width和height)可选值:content-box默认值,高度和宽度用来设置内容区的大小
border-box高度和宽度用来设置整个盒子可见框的大小,width和height指的是内容区和内边距和边框的总大小

.box{width:200px;
height:200px;
background-color:#bfa;
box-sizing:border-box;}

轮廓线

outline用来设置元素的轮廓线,用法和border一模一样。轮廓和边框不同的点就是轮廓不会影响可见框的大小。
一般在:.box:hover{outline:10px red solid;}
例:

<style>
    .box{
      width:200px;
      height:200px;
      background-color:#baf;
    }
  .box:hover{outline:10px red solid;}
  </style>
</head>
<body>
<div class="box">a</div>

阴影

阴影:box-shadow:用来设置元素的阴影效果,阴影不会影响页面布局

box-shadow:20px 20px 20px orange;

第一个值:左右偏移量
第二个值:上下偏移量
第三个值:阴影的模糊半径
第四个值:阴影的颜色


圆角

border-radius:用来设置圆角圆的半径大小 顺时针
border-top-left/right/(bottom-left/right)-radius

border-radius:10px 20px 30px 40px;

border-top-left-radius:50px 100px;中,第一个值是x轴方向,第二个值是y轴方向
分别指定:border-radius:20px/40px;
设置为圆形:border-radius:50%;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值