CSS属性2.0

一.盒子模型

1.组成

(1)作用:布局网页,摆放盒子和内容.

(2)组成部分:

  • 内容区域-width&height
  • 内边距-padding(出现在内容与盒子边缘之间,会撑大盒子)
  • 边框线-border
  • 外边距-margin(出现在盒子外面) 

 

border

        属性名:border(bd)

        属性值:边框线粗细 线条样式 颜色(空格隔开,不区分顺序)

属性值线条样式
solid实线
dashed虚线
dotted点线
<style>
    div {
        width: 20px;
        height: 20px;
        background-color: pink;

        border: 1px solid #000;
        margin: 50px;
        padding: 20px;
    }
    </style>

边框线 

        属性名:border-方位名词(bd+方位名词首字母,例:bdl)

        属性值:边框线粗细 线条样式 颜色(空格隔开,不分先后顺序)

内边距

        属性名:padding/padding-方位名词(p/p+方位名词首字母)

        属性值:同上

        多值写法:

取值个数含义
一个值四个方向相同
四个值上右下左
三个值上;左右;下
两个值上下;左右

怪异盒模型   

width + margin(左右)(即width已经包含了padding和border值)(IE浏览器

盒子尺寸:内容尺寸+border尺寸+内边距尺寸(盒子变大的原因)

解决:(1)手动做减法(2)内减模式:box-sizing:border-box;(在后面加上即可)

外边距

两盒之间的距离.

属性名:margin

属性值:与padding属性值写法含义相同. 

合并现象

场景:垂直排列的兄弟元素,上下margin会合并

现象:取两个margin中较大值生效

<style>
    .one {
        width: 100px;
        height: 100px;
        background-color: red;
        margin-bottom: 20px;
    }
    .two {
        width: 100px;
        height: 100px;
        background-color: blue;
        margin-top: 50px;
    }
    </style>

塌陷问题 

场景:父子级的标签,子级加上外边距会产生塌陷问题

现象:导致父级一起向下移动

 <style>
        .son{
        width: 100px;
        height: 100px;
        background-color: red;
        margin-top: 50px;
        }
    </style>

解决方法:

  • 取消子级margin,父级设置padding(规避问题)   加box-sizing:border-box;(防止撑大盒子,因为子级是内容)
  • 父级设置overflow:hidden(修改问题)
  • 父级设置border-top (修改问题)

行内元素-内外边距问题 

 场景:行内元素添加margin和padding,无法改变元素垂直位置

解决方法:给行内元素添加line-height可以改变垂直位置(因为行内元素:不换行没有空格,垂直位置受行高的限制)

2.版心居中

margin:0 auto(左右相等,浏览器自动计算取值);

3.清除默认样式

例:清除默认的内外边距.

        通配符选择器设置margin,padding为0

        并集选择器设置

4.元素溢出

控制溢出元素的内容的显示方式.

属性名:overflow

属性值效果
hidden溢出隐藏
scroll溢出滚动(无论是否溢出,都显示滚动条位置)
auto溢出滚动(溢出才显示滚动条位置)
visible默认值
div {
        width: 20px;
        height: 20px;
        background-color: pink;

       /* overflow: hidden; */
       /* overflow: visible; 上下都有滚动条*/
       /* overflow: auto;有垂直滚动条,没有水平滚动条 */
       
    }

其他可以处理溢出的CSS属性:
        word-wrap:用于控制文本的折行

        text-overfiow:用于定义当文本溢出其容器时如何显示

属性值效果
clip默认值:当文本溢出容器时,溢出的部分会被剪掉,不显示任何内容
ellipsis当文本溢出容器时,在溢出的地方会显示一个省略号(...)标记
string允许指定一个自定义的字符串来代表被剪切的文本(并不是所有浏览器都支持)

注:在使用text-overflow属性时,通常需要配合其他CSS属性以确保文本能够正确显示。例如,white-space: nowrap;确保文本不会换行,而overflow: hidden;则确保溢出的内容被隐藏。同时,你也需要给容器定义一个明确的宽度,否则text-overflow属性将不会生效,因为文本只会撑开容器而不会溢出。

需要注意的是,text-overflow属性主要用于单行文本的溢出处理。对于多行文本的溢出处理,通常需要借助其他CSS技巧或JavaScript来实现。

 5.圆角

作用:设置元素外边框为圆角

属性名:border-radius

属性值:数字+px/百分比(圆角半径)

注:属性值写多个:从左上顺时针赋值,没有取值的角与对角赋值相同

(1)正圆

正方形盒子设置圆角属性值为宽高的一半/50%

(2)胶囊形状

给长方形盒子设置圆角属性值为盒子高度的一半

6.阴影

作用:给元素设置阴影效果

属性名:box-shadow

属性值:X轴偏移量  Y轴偏移量  模糊半径  扩散半径(阴影大小)  颜色  内外阴影

注:X轴偏移量和Y轴偏移量必须书写

默认是外阴影,内阴影需要在最后添加inset

二.布局

1.标准流

标准流也叫文档流,是标签在页面中默认的排布规则,例如:块元素独占一行,行内元素可以一行显示多个.

2.浮动

作用:让块元素水平排列(实现图文混排的效果)

属性名:float

属性值:

  • left:左对齐
  • right:右对齐

浮动后的盒子特点:

        (1)顶对齐(2)具备行内块特点(3)脱标(4)父级宽度不够,浮动的子级会换行

 浮动盒子的脱标现象(脱离标准流的控制)

清除浮动

        场景:浮动元素会脱标,如果父级没有高度,子级无法撑开父级高度(可能导致页面布局混乱)

        解决方法:清除浮动(的影响)

方法一:额外标签法

        在父元素内容的最后加一个块级元素,设置CSS属性clear:both(left,right)

        习惯class名为.clearfix

方法二:单伪元素法

<style>
    .clearfix::after {
        content:"";
        /* 伪元素要有content才能生效 */
        display: block;
        /* 块级元素 */
        clear: both;
    }
</style> 
</head>
<body>
<div class="clearfix">
    <!-- 给父级元素最后加标签:after -->
    <div>
        wenben
    </div>
    <div>
        wenben
    </div>
</div>

方法三:双伪元素法(推荐)

.clearfix::after,
    .clearfix::before {
        content:"";
        display: table;
    }
    .clearfix::after {
        clear: both;
    }

before:解决外边距塌陷问题

方法四:overflow

父元素添加CSS属性:overflow:hidden(因为父级元素无法被撑开,overflow检查父级范围)

3.Flex布局(弹性布局)

是浏览器提倡的布局模式,适合结构化布局,提供了强大的空间分布和对齐能力.

Flex模型不会产生浮动布局中的脱标现象,布局网页更简单,灵活.

格式:display:flex;(父级样式中添加)

(1)组成

设置方式:给父元素设置display:flex;(df)     子元素可以自动挤压或拉伸.

组成部分:

  • 弹性容器
  • 弹性盒子
  • 主轴:默认在水平方向
  • 侧轴/交叉轴:默认在垂直方向

 

(2)主轴对齐方式

属性名:justify-content

属性值效果
flex-start默认值,弹性盒子从起点开始依次排列

flex-end

弹性盒子从终点开始依次排列
center沿主轴居中排列
space-between沿主轴均匀排列,空白间距分在盒子之间
space-around沿主轴均匀排列,空白间距分在盒子两侧
space-evenly沿主轴均匀排列,盒子与容器之间间距相等

(3)侧轴对其方式(与主轴垂直)

 align-items:当前弹性容器内所有弹性盒子的侧轴对齐方式(给弹性容器设置,有display:fix)

align-self:单独控制某个弹性盒子的侧轴对齐方式(给弹性盒子设置)

(4)改变主轴方向

主轴默认在水平方向,侧轴默认在垂直方向.

属性名:flex-direction

改变主轴方向为垂直方向,则侧轴自动变为水平方向.

(5)弹性伸缩比

作用:控制弹性盒子的主轴方向的尺寸.

        属性名:flex

        属性值:整数数字,表示占用父级剩余尺寸的份数.

注:默认情况下,侧轴无高度则拉伸与父级同高,主轴方向无宽度由内容撑开.

(6)弹性盒子换行

弹性盒子可以自动挤压或拉伸,默认情况下,所有弹性盒子都在一行显示.

属性名:flex-wrap

属性值:

  • wrap:换行
  • nowrap:不换行(默认)

(7)行对齐

属性名:align-content

注:对单行弹性盒子不生效,可以用换行使效果生效.

三.网页制作思路 

1.布局思路

先整体再局部,从外到内,从上到下,从左到右.

2.CSS实现思路

(1)画盒子,调整盒子范围:宽高背景色

(2)调整盒子位置:flex布局,内外边框

(3)控制图片,文字内容样式

四.定位

1.作用:

灵活的改变盒子在网页中的位置.

2.实现:

(1)定位模式:position

1.相对定位

position:relative;+边偏移属性

        注:边偏移属性是以原来位置为参照(top等代表原来位置在上),来确定改变后的位置

        不脱标,原来的位置还属于该标签.

        标签显示模式特点不变.

2.绝对定位

position:absolute;(poa)

使用场景:子级设置绝对定位,父级设置相对定位.

特点:脱标,不占位.

参照物:先找最近的已经定位的祖先元素,如果所有祖先元素都没有定位,参照浏览器可视区改位置.

显示模式特点改变:宽高生效(具备了行内块的特点)

(2)边偏移:设置盒子的位置

  • left
  • right
  • top
  • bottom 

3.定位居中

实现步骤:1.绝对定位(父级居中:子绝父相;浏览器居中:绝对定位)

2.水平,垂直边偏移为50%

3.子级向左,上移动自身尺寸的一半

left:50%;(盒子最左边缘居中)

  • 左上外边距为  -(负号)尺寸的一半
  • transform:translate(-50%,-50%);

 

4.固定定位 

position:fixed;

场景:元素位置在网页滚动时不会改变.

特点:(1)脱标不占位

(2)改变位置的参照物是浏览器的窗口.

(3)显示模式特点:具备行内块的特点(宽高有内容撑开,可以加宽高)

5.堆叠层级

属性名:z-index

默认效果:按照标签书写顺序,后来者居上.

作用:设置定位元素的层级顺序,改变定位元素的显示顺序.

取值:整数.默认是0,取值越大显示顺序越靠上.

CSS精灵

实现步骤:

1.创建盒子,盒子尺寸和小图尺寸相同

2.设置盒子背景图为精灵图(大图)

3.添加background-position属性,改变背景图位置

        使用PxCook测量小图片左上角坐标

        取负数坐标为background-position属性值(向左上移动图片位置)

background-position:right  0;(right表示取到精灵图右边的图片)

五.字体图标

展示的是图标,本质是字体.

作用:在网页中添加简单的,颜色单一的小图标.

1.引入字体样式表(iconfont.css)

<link rel="stylesheet" herf="./iconfont/iconfont.css>
</head>
<body>

        <span class="iconfont icon-xxx"></span>

</body>

2.标签使用字体图标类名

(1)iconfont:字体图标基本样式(字体名,字体大小等)

(2)icon-xxx:图标对应的类名 

 用(.iconfont)类选择器进行修改,标签选择器会被覆盖,如果要调整字体大小,注意选择器的优先级要大于iconfont类选择器.

3.上传矢量图

作用:项目特有的图标上传到iconfont图标库,生成字体.(图标后缀名为.svg)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值