盒子模型学习日记

Emmet语法

1.如果自动生成标签,按tab键
在这里插入图片描述
在这里插入图片描述

  1. 生成多个标签,用*,例如
    `div*3
    `

3.父子关系,用>
在这里插入图片描述

4.兄弟关系,用+
在这里插入图片描述

5.生成带有类名或者id名字的,直接写.demo(类)或者#two tab(id)
在这里插入图片描述
6.如果生成div有顺序,可以用自增符号$

在这里插入图片描述
7.生成的标签里面默认显示文字
在这里插入图片描述

在这里插入图片描述

自动格式化

保存时自动格式化,Ctrl+S

CSS的复合选择器

两个或多个基本选择器组合

1. 后代选择器

又称包含选择器
可以选择父元素里面的子元素
写法就是把外层标签写在前面,内层标签写在后面,中间用空格分割。当标签发生嵌套时,内层标签就成为外层标签的后代
元素1 元素2{样式说明}
元素2必须是元素1的后代(可以是儿子,孙子等(一层一层往下)),元素1和元素2之间有空格,元素1和元素2可以是任意选择器在这里插入图片描述
在这里插入图片描述
当有相同标签,想要针对某一个,用class
在这里插入图片描述
在这里插入图片描述

2.子选择器

只能选择作为某元素的最近元素,只是儿子
写法:
元素1>元素2
在这里插入图片描述
在这里插入图片描述

并集选择器

可以选择多组选择器,同时为他们定义相同的样式,通常用于集体声明
语法:
元素1,元素2 {样式申明}
并集选择器喜欢竖着写,最后一个选择器不需要逗号

在这里插入图片描述
在这里插入图片描述

5.伪类选择器

向某些选择器添加特殊效果,比如给链接添加特殊效果,或选择第一个,第n个元素
特点是用冒号:表示,比如:hover

i.链接伪类器

语法:
a:link //选择所有未被访问的链接
a:visited //选择所有一杯访问的链接
a:hover //选择鼠标指标位于其上的链接
a:active //选择活动链接(鼠标按下没有弹起的链接)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果一起,必须按照顺序来,先link>visited>hover>active
链接要单独指定颜色
一般开发中
在这里插入图片描述

ii.focus 伪类选择器

用于选取获得焦点的表单元素
焦点就是光标,一般情况下类表单才能获取,因此主要针对表单元素来说
语法:
input:focus {
background-color:yellow;

        input:focus {
            background-color: pink;
            color: red;
        }
    </style>
</head>
<body>
    <input type="text">
    <input type="text">
    <input type="text">

复合选择器总结
在这里插入图片描述

元素的显示模式

概念:元素(标签)以什么样的方式显示
元素分为块元素和行内元素两种类型

块元素:div

特点:
1、独占一行
2、高度、高度、外边距、内边距自定义
3、宽度默认容器宽度
4、是一个容器及盒子,里面可以放行内或者块级元素
注意:
文字内元素不能使用块级元素
p 主要存放文字,不能放块级元素,h也是

 <style>
        div {
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>
</head>
<body>
    <div>读张</div>

在这里插入图片描述

行内元素

也称内联元素
默认宽度是它本身的宽度
行内元素只能容纳文本或其它行内元素
注意:
链接内不能在放链接
链接a里面可以放块状元素,但是给a转换一下块级模式最安全

行内块元素

img/,input/,td/同时具有块元素和行内元素的特点
特点:

  1. 和相邻元素(行内块)在一行上,但是他们之间会有空隙,一行可以显示多个(行内元素特点)
  2. 默认宽度就是它本身宽度(行内元素)
  3. 高度,行高,外边距,内边距可以控制(块级元素特点)

总结

在这里插入图片描述

元素显示模式转换

一个模式需要另外一种模式的特性

转换成元素

display: block;
display:inline;
display:inline-block;

  <style>
 a {
  width: 150px;
  height: 50px;
  background-color: pink;
  display: block;
 }
  div {
    width: 300px;
    height: 100px;
    background-color: purple;
    display: inline;
  }
</head>
    </style>
   <body>
 <a href="#">金星阿姨</a>
<a href="#">金星阿姨</a>
<div>我是块状</div>
<div>我是块状</div>

在这里插入图片描述
在这里插入图片描述
练习

 <style>
      a {
        display:block;
        width: 230px;
        height: 40px;
        background-color: #55585a;
        font-size:14px;
        color: #fff;
        text-decoration: none;
        text-indent: 2em;
      }
      a:hover {
        background-color: #ff6700;
      }
    </style>
   <body>
<a href="#">手机电环卡</a>
<a href="#">电视 盒子</a>
<a href="#">电视 盒子</a>
<a href="#">电视 盒子</a>
</body>
</html>

在这里插入图片描述

单行数组垂直居中

行高=盒子高

在这里插入图片描述

CSS背景

背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定

背景颜色

background-color:颜色值;
transparent透明色

背景图片

logo或者装饰性的小图片,便于控制位置
格式:
background-image:none\url(指定一个背景图片)

背景平铺

background-repeat:repeat|no-repeat|repeat-x|repeat-y(不管宽度,只管高度,吧高度填满即可)
页面元素既可以添加背景图片
在这里插入图片描述

</head>
``` 页面元素既可以添加背景图片,也可以添加背景颜色,背景图片压住背景颜色

背景图片位置*

利用background-position属性改变图片在背景中的位置

background-positon: x,y;

x,y坐标,可以使用方位名词或者精确名词
在这里插入图片描述
position分别是上中下,左中右
1.参数是方位名词:

<style>
      div {
        height: 400px;
        width: 700px;
        background-color: pink;
        background-image: url(../第九组小组作业/t019635d530d843807a.jpg);
        /* 默认情况下是平铺的 */
        /* 不平铺,使其上方居中显示 */
        background-repeat: no-repeat;
        /* 前面是相对于x轴,后面是相对于y轴 */
        background-position: center right;
        /* center right和right center效果等效 */
        background-position: right center;

      }
    </style>
    </head>
   <body>
<div></div>
/* 只有一个right默认y轴垂直居中 */
        background-position: right;

  1. 如果两个值都是方位名词,则两个值的前后顺序无关,比如left top和top left效果一样
  2. 如果只指定一个方位名词,另一个值省略,则第二个值默认居中对齐
 /* 第一个参数是top y轴顶部对齐;第二个参数省略x轴,是水平居中显示 */
        background-position: top;

小的图片调整一般使用背景图片,不用插入图片
背景图片过大,调整水平居中呈现主要内容

<style>
      body {
        /* 字的大小 */
        font-size: 14px;
        /* 不加粗 */
        font-weight: normal;
        /* 单行文字在盒子里面垂直居中,让行高等于高 */
        line-height: 40px;
        background-image: url(../images/16795694046507.jpg);
        background-repeat: no-repeat;
        background-position:center top;
        text-indent: 1.5em;
      }
    </style>
    </head>
   <body>
</body>

2.参数是精确单位
背景图片在盒子中移动距离是比较容易的
在这里插入图片描述

<style>
      div {
       width: 300px;
       height: 300px;
        line-height: 40px;
        background-image: url(../images/16795694046507.jpg);
        background-repeat: no-repeat;
        background-position: 20px 50px;
        background-color: pink;
        text-indent: 1.5em;
      }
    </style>
    </head>
   <body>
    <div></div>
</body>

在这里插入图片描述
3.参数是混合单位
精确单位和方位名词混合使用,一个值是x坐标,第二个值是y坐标(一定是由顺序的)

背景图片固定(背景附着)

background-attachment设置图像是否固定或者随着页面的其余部分滚动:
在这里插入图片描述
默认scroll,不动是fixed

背景复合写法

没有特定顺序
一般:背景颜色,背景图片地址、背景平铺、背景图像滚动、背景图片位置

 <style>
      body {
        /* background-image: url(../images/16795694046507.jpg);
        background-repeat: no-repeat;
        background-position: 20px center;
        background-color: pink;
        background-attachment: fixed;
        font-size: large; */
        background: pink url(../images/16795694046507.jpg) no-repeat fixed top;
      }

背景色半透明

在这里插入图片描述

练习

`<style>
     .nav a {
      display:inline-block;
      width: 120px;
      height: 58px;
      background-color: pink;
      /* 字水平居中 */
      text-align: center;
      /* 垂直居中:行高=盒子高度 */
      line-height: 58px;
      color: #fff;
      /* 去掉下划线 */
      text-decoration: none;
     }
     .nav .bg1 {
      background: url(../QQ图片20230308170559.jpg) no-repeat;
     }
     .nav .bg1:hover{
       background-image:url(../images/16795694046507.jpg);
     }
     .nav .bg2 {
      background-image: url(../images/b7fbfd4da75ac18f5a98688589099cd0.jpeg);
     }
     /* 下面这个鼠标放上去改变的是字的颜色 */
     .nav .bg2:hover{
      color: bisque;
     }
    </style>
    </head>
   <body>
    <div class="nav">
      <a href="#" class="bg1">五彩导航</a>
      <a href="#" class="bg2">五彩导航</a>
      <a href="#" ">五彩导航</a>
      <a href="#">五彩导航</a>
      <a href="#">五彩导航</a>
    </div>
</body>
</html>`

CSS的三大特性

层叠性、继承性、优先性

1.层叠性

相同选择器,样式冲突的,使用就近原则,把前面样式给盖掉
样式不冲突的,不会层叠

2.继承性

在这里插入图片描述
在这里插入图片描述
子标签会继承父标签的某些样式,如文本样式和字号。如(text-,font,line-这些元素开头可以继承,以及color属性)

行高的继承性

行高可以不跟单位
在这里插入图片描述

 <style>
      body {
        color: pink;
        font-size: 12px/1.5;
      }
      div {
        font: size 14px;
      }
    </style>
</head>
<body>
  <div>
    粉色的回忆
  </div>
  <p>jiayou</p>
</body>

使子元素行高是当前文字大小的1.5倍

优先级

选择器不同时,权重不同
在这里插入图片描述
行内样式表比前面选择器优先级都高

<style>
      .text {
        color: red;
      }
      div {
        color:pink!important;
      }
      #demo {
        color:green;
      }
      </style>
</head>
<body>
  <div class="test" id="demo" style="color: purple">
    粉色的回忆
  </div>

注意点:
看标签在,就直接执行那个样式(子元素继承父亲的权重始终为0,所以子元素的权重更高)
链接a有默认样式,不能用父元素来改变,只能单独指定a的样式
在这里插入图片描述

权重叠加

复合选择器有叠加的问题
叠加时不会进位,从左到右比较
在这里插入图片描述
在这里插入图片描述

CSS盒子模型

盒子模型

  • 先准备相关的网页元素,网页元素基本都是Box
  • 利用CSS设置好盒子样式,然后摆放到相应位置
  • 往盒子里面装内容
    利用CSS摆盒子,CSS盒子模型本质是一个盒子,封装周围的HTML元素,他包括:边框、外边距、内边距和实际内容
    在这里插入图片描述

边框

border :border-width 边框粗细|| border-style 边框的样式||border-color边框颜色
border-style:
solid(实线边框)dashed(虚线边框)
dotted(点线,小条要短一点)

边框复合性写法

border:1px solid red; 没有顺序
border-top:1px solid red;只设定上边框,其余同理,border-bottom:

 <style>
      div {
        width: 200px;
        border: 200px;
        /* 只有上边框是红色,其它都是蓝色,合理用层叠性 */
        border: 1px solid blue;
        border-top:1px solid red;
      }
      </style>
</head>
<body>
  <div>
    粉色的回忆
  </div>

表格的细线边框

合并相邻的边框
在这里插入图片描述
边框会影响盒子实际大小
边框会让盒子实际大小变大
解决方法:测量盒子大小的时候,不量边框
如果测量的时候包含了边框,则需要width/height减去边框宽度

内边距

padding属性设置内边距,即边框与内容之间的距离
简写:用padding
一个值:上下左右都是该边距
两个值:上下、左右
三个值:上、左右、下
四个值:上、右、下、左(顺时针)
注意
如果盒子已有高度和宽度,再加padding值会撑大盒子,用width/height减去边框宽度
不同盒子,字数不同可是设置相同内边距来调节,用padding挤开
练习:

   <style>
      .nav {
        height: 41px;
        /* 只有上边框是红色,其它都是蓝色,合理用层叠性 */
        border-top: 3px solid #ff8500;
        border-bottom:1px solid #edeef0;
        background-color: #fcfcfc;
        /* 设置行高,文字可以垂直居中 */
        line-height: 41px;
      }
      /* a属于行内元素,此时必须转换成行内块元素,既有高度,又可以放在一行 */
      .nav a:hover{
        display: inline-block;
        height: 41px;
        /* 盒子之间内边距,必须要设置上下内边距 */
        padding:0px 20px;
        font-size: 4c4c4c;
          color: pink;
          text-decoration: none;
      }
      .nav a:hover{
        background-color: #eee;

      }
      </style>
</head>
<body>
  <div class="nav">
    <a href="#">新浪</a>
    <a href="#">手新浪</a>
    <a href="#">手机新浪</a>
    <a href="#">手机新浪网</a>
  </div>

在这里插入图片描述
如果盒子没有指定width/height属性,则此时padding不会撑开盒子相应宽度和高度,默认和页面或者父亲一样不会再增加,在里面减

 div {
        width:300px;
        height:100px;
        background-color: purple;
      }
      div p {
        padding: 30px;
        background-color: blue;
      }
      </style>
</head>
<body>
  <div>
    <p></p>
  </div>

在这里插入图片描述
在这里插入图片描述
孩子和父亲一样宽,没必要写孩子宽度
在这里插入图片描述

外边距(margin)

控制盒子与盒子之间的距离
一个值:上下左右都是该边距
两个值:上下、左右
三个值:上、左右、下
四个值:上、右、下、左(顺时针)

外边距典型应用

外边距可以让盒子水平居中,但必须满足下两个条件:
1.盒子必须指定宽度
2.盒子左右的外边距都设置为auto

.header {width:960px;margin:0 auto;}

以下三种都可以:

  • margin-left-auto;margin-right-auto;
  • margin:auto;
  • margin:0 auto;
    以上是块状元素水平居中,行内元素或者行内块元素水平居中给其父元素添加text-align:center即可

嵌套块元素垂直外边距的塌陷

对于两个嵌套关系(父子关系)的块元素,父元素有上外边框同时子元素也有上外边距,此时父元素会塌陷较大的外边距
在这里插入图片描述
解决方案:

  • 可以为父元素定义上边框
  • 拿一条线隔开
<style>
.father {
        width: 400px;
        height: 400px;
        background-color: purple;
        margin-top:50px;
        border-top:1px solid red; 
      }
      .son {
        width: 200px;
        height: 200px;
        background-color: pink;
        margin-top: 100px;
      }
     </style>
  • 可以为父元素定义上内边距

在这里插入图片描述

  • 可以为父元素添加overflow:hidden;
    在这里插入图片描述

在这里插入图片描述

清除内外边距

网页元素都带有默认的内外边距,而且不同浏览器默认的也不一致,布局前,首先要清除下网页元素的内外边距

<style>
      * {
        margin: 0;
        padding: 0;
      }
     </style>

行内元素尽量只设置左右,不要设置上下,但是转换成块级就可以了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值