CSS基础二

一、盒子模型

1.盒子的组成

盒子模型:就是把HTML页面中的布局元素看作一个矩形盒子,也就是一个盛装内容的容器
CSS盒子模型的本质就是一个盒子,封装周围的HTML元素,包括:边框、外边距、内边距和实际内容。(border、margin、padding、content)

2.边框border

语法:
    border: border-width || border-style || border-color
属性:
    border-width:定义边框的粗细,单位是px
    border-style:边框的样式
    属性值:
        none:定义无边框
        hidden:与none相同,不过应用于表时除外,对于表,hidden用于解决边框冲突
        dotted:定义点状边框,在大多数浏览器中呈现为实线
        dashed:定义虚线,大多数浏览器呈现为实线
        solid:定义实线
        double:定义双线,双线的宽度等于border-width的值
        groove:定义3D凹槽边框,其效果取决于border-color的值
        ridge:定义3D垄状边框,其效果取决于border-color的值
        inset:定义3Dinset边框,其效果取决于border-color的值
        inherit:定义应该从父元素继承边框样式
    border-color:边框颜色
    
边框的复合写法:简写
    border: 5px solid red;   没有顺序
边框可以拆开写:
    border-top: 5px dotted red;
    border-bottom: 5px double red;
    border-left: 5px dashed red;
    border-right:  5px groove red;

3.表格的细线边框

border-collapse属性控制浏览器绘制表格边框的方式,它控制相邻单元格的边框。
语法:
    border-collapse:collapse;
属性值:
    collapse:边框会合并为一个单一的边框,会忽略border-spacing和empty-cells属性
    separate:默认值,边框会被分开,不会忽略border-spacing和empty-cells属性
    inherit:规定应该从父元素继承border-collapse属性的值
注:
1)collapse单词是合并的意思
2)border-collapse:collapse;表示相邻边框合并在一起

4,边框会影响盒子实际大小

边框会额外增加盒子的实际大小,因此
1)测量盒子大小时,不量边框
2)如果测量时包含边框,则需要width/height减去边框的宽度

5.盒子的内边距padding

padding属性用于设置内边距,即边框与内容之间的距离
属性: 
    padding-left:左内边距
    padding-right:右内边距
    padding-top:上内边距
    padding-bottom:下内边距
复合属性写法:简写
    padding: 5px;      1个值,代表上下左右都有5像素内边距
    padding: 5px 10px   2个值,代表上下边距5像素,左右边距10像素
    padding: 5px 10px 20px;     3个值,代表上内边距5像素,左右边距10像素,下边界20像素
    padding: 5px 10px 20px 30px;    4个值,代表上、右、下、左,顺时针
    
注:
1)如果盒子已经有了宽度和高度,此时再指定内边距,会撑大盒子
2)如果保证盒子跟效果图大小保持一致,则让width/height减去多出来的内边距大小即可
3)如果盒子本身没有指定width/height属性,则此时的padding不会撑开盒子的大小

6.盒子的外边距margin

margin属性用于设置外边距,即控制盒子和盒子之间的距离
属性:
    margin-left
    margin-right
    margin-top
    margin-bottom
 复合属性写法:简写
    同padding相同

7.外边距的典型应用

外边距可以让块级盒子水平居中,但必须满足以下:
1)盒子必须指定了宽度
2)盒子左右外边距都设置为auto
常见写法:
    margin-left: auto; margin-right: auto;
    margin: auto;
    margin: 0 auto;

8.外边距合并

使用margin定义块元素的垂直外边距时,可能会出现外边距的合并
1.嵌套块元素垂直外边距的塌陷
    对于两个嵌套关系(父子关系)的块元素,父元素有上外边距,同时子元素也有上外边距,此时父元素会塌陷较大的外边距值(即,当父元素的margin值大时,按父元素的参数进行塌陷,若子元素的margin值大时,按子元素的参数进行塌陷)
解决方案:
1)可以为父元素定义上边框(border-top)
2)可以为父元素定义上内边距(padding-top)
3)可以为父元素添加overflow:hidden
4)其他方法:如浮动、固定、绝对定位的盒子不会出现塌陷

2.两个同级的div1和div2,当div1定义下边距,div2定义上边距,则边距较小的一个会被吃掉

9.清除外边距

网页元素很多都带有默认的内外边距,而且不同浏览器的也不一致,因此在布局之前,首先要清除下网页元素的内外边距
    * {
        padding: 0;  清除内边距
        margin: 0;   清除外边距
    }
注:
行内元素为了照顾兼容性,尽量只设置左右内外边距。不要设置上下内外边距,但是转换为块级和行内块元素就可以了
    因为行内元素设置margin: 20px后,仅左右边距生效,上下不生效,故为了兼容性,尽量只设置左右边距

10.总结

1)布局为啥用不同盒子,我只想用div?
    标签都是有语义的,合理的地方用合理的标签,如产品的标题就用h,大量文字段落就用p
2)为啥用那么多类名?
    类名就是给每个盒子起一个名字,可以更好的找到这个盒子,选取盒子更容易,后期维护也方便
3)到底用margin还是padding?
    大部分情况两个都可以混用,两者各有优缺点,根据实际情况使用
4)

11.圆角边框

在CSS3中,新增了圆角边框样式
border-radius属性用于设置元素的外边框圆角
语法:
    border-radius: length;
    border-top-left-radius:
    border-top-right-radius:
    border-bottom-left-radius:
    border-bottom-right-radius:
radius半径(圆的半径)原理:
    (椭)圆与边框的交集形成圆角效果
属性值:
    可以为数值,也可以为百分比
    
属性值复合写法:
    border-radius: 左上角、右上角、右下角、左下角
    border-radius: 参数1 参数2     #表示左上角及对角(右下角)为参数1,右上角和对角(左下角)为参数2
    border-radius: 参数1 参数2 参数3   #左上角-参数1,右上角及左下角-参数2,右下角-参数3
    
圆形块:
    设置border-radius属性值为正方形边框的一半。
注:
1)当属性值设置为百分百时,属性值和边框(高度或宽度中较短的边框)的长度
2)当属性值为百分之五十时,属性值为边框(高度或宽度中较短的边框)的一半
3)当属性值为百分比时,最高仅能设置到百分之五十
4)当属性值为数值时,最高仅能设置为(高度或宽度中较短的边框)的一半

12.盒子阴影

box-shadow属性为盒子添加阴影
语法:
    box-shadow: h-shadow v-shadow blur spread color inset;
属性值:
    h-shadow:必须,水平阴影的位置,允许负值(正数向右移动,负数反之)
    v-shadow:必须,垂直阴影的位置,允许负值(正数向下移动,负数反之)
    blur:可选,模糊距离(阴影的虚实)
    spread:可选,阴影的尺寸(阴影的大小)
    color:可选,阴影的颜色
    inset:可选,将外部阴影(outset)改为内部阴影
    
    box-shadow: 10px 10px 10px 10px rgba(0,0,0, .3) inset;
注:
1)默认为外阴影(outset),但是不可以写这个单词,否则会导致阴影失效
2)盒子阴影不占用空间,不会影响其他盒子的排列

13.文字阴影

使用text-shadow属性将阴影应用于文本
语法:
    text-shadow: h-shadow v-shadow blur color;
属性值:
    h-shadow:必须,水平阴影位置,允许负值
    v-shadow:必须,垂直阴影位置,允许负值
    blur:可选,模糊距离
    color:可选,阴影的颜色

二、传统网页布局的三种方式

1.普通流(标准流/文档流)

标准流:标签按照规定好的默认方式排列
1)块级元素独占一行,从上向下顺序排列
常用元素:div、hr、p、h1~h6、ul、ol、dl、form、table
2)行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行
常用元素:span、a、i、em等

2.浮动float

1)浮动的典型应用:可以让多个块级元素一行内排列显示
2)网页布局的第一准则:多个块级元素纵向排列找标准流(即存在多个div,且为垂直向下排列),多个块级元素横向排列找浮动(即存在多个div保存在同一行显示)
3)网页布局的第二准则:先设置盒子大小,再设置盒子的位置
4)一个盒子里面有多个子盒子,如果其中一个盒子浮动了,那么其他兄弟也应该浮动,以防止引起问题(浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流)

float属性用于创建浮动框,将其移动一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘
语法:
    选择器 { float: 属性值}
属性值:
    none:元素不浮动(默认)
    left:元素向左浮动
    right:元素向右浮动

2.浮动特性

1)脱离标准普通流的控制(浮)移动到指定位置(动),俗称脱标
2)浮动的盒子不在保留原先的位置
3)如果多个盒子都设置了浮动,则它们会按照属性值一行内显示并且顶端对齐排列
4)浮动元素具有行内块元素特性,任何元素都可以浮动,不管原先是什么模式的元素,添加浮动之后都具有行内块元素相似的特性
    即:
        a、当行内元素添加浮动后,就可以配置宽度和高度(span)
        b、如果块级盒子没有设置宽度,默认宽度和父级一样宽,但是添加浮动后,它的大小根据内容长度决定
        c、浮动的盒子中间没有缝隙,是紧挨着一起的
注:
1)浮动的元素是相互贴靠在一起(中间不会有缝隙),如果父级宽度装不下这些浮动的盒子,多出的盒子会另起一行对齐显示

3.浮动位置的约束

浮动元素经常和标准流父级搭配使用

为了约束浮动元素的位置,网页布局一般采取的策略是:
1)先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置,符合网页布局的第一准则

4.清除浮动

清除浮动的本质:
1)清除浮动元素脱离标准流造成的影响
2)如果父盒子本身右高度,则不需要清除浮动
3)清除浮动之后,父级就会根据浮动的子盒子自动检测高度,父级有了高度,就不会影响到下面的标准流了



1)清除浮动-额外隔墙法

语法:  
    clear: 属性值
属性值:
    left:不允许左侧有浮动(清除左侧浮动的影响)
    right:不允许右侧有浮动(清除右侧浮动的影响)
    both:同时清除左右侧浮动的影响
    
在最后一个浮动元素的后面加个空标签,并添加clear属性
<div style="clear:both">

注:空元素必须是块元素,不能是行内元素
清除浮动的策略是:闭合浮动

2)清除浮动-父级添加overflow

给父级添加overflow属性,将其属性值设置为hidden、auto或scroll
注:
1)overflow是给父级添加的
2)缺点:无法显示溢出的部分

3)清除浮动-:after伪元素法

:after方式是额外标签法的升级版,也是给父元素添加

.clearfix:after {
    conten: "";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}
.clearfix {  /*IE6、7专有 */
    *zoom: 1;
}

4)清除浮动-双伪元素清除浮动


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

5)清除浮动-总结

为什么需要清除浮动
1)父级没有高度
2)子盒子浮动了
3)影响下面的布局,我们就应该清除浮动

三、ps切图

1.常见图片个数

1)jpg格式:JPEG(jpg)对色彩的信息保留较好,高清、颜色较多,产品类的图片经常用jpg格式
2)gif格式:GIF格式最多只能存储256色,所以通常用来显示简单图形及字体,但可以保存透明背景和动画效果,常用于图片小动画效果
3)png格式:结合jpg和gif的优点,具有存储形式丰富的特点,能够保持透明背景,如果想要切成背景透明的图片,请选择png格式
4)psd格式:Photoshop专用格式,可以存放图层、通道、遮罩等

2.图层切图

3.切片切图

4.插件切图

Cutterman是一款运行在photoshop中的插件,能够自动将你需要的图层进行书城,以替代传统的手工“导出web所用格式”以及使用切片工具进行挨个切图的繁琐流程

网址:http://www.cutterman.cn/zh/cutterman/
posted @ 2021-06-04 22:21  达标  阅读(106)  评论(0编辑  收藏  举报