css的学习(下)两千字入门css的几种布局(flex,grid,float...)

简介: # 规则生效问题## 优先级 特异度的值来决定的### 选择器的特异度 Sqecificity id (伪)类 标签 #id .class tag 百 十 个# 继承 某些属性会自动继承其父元素的计算值 除非显示的 指定一个值 文字相关的,颜色,字体 不给会继承 一些盒子模型 大小 不会继承## css可以和不可以继承的属性 不可继承的:display、margin、border、padding、background、height、min

规则生效问题

优先级

特异度的值来决定的

选择器的特异度 Sqecificity

id      (伪)类      标签
#id     .class       tag
百       十           个

继承

某些属性会自动继承其父元素的计算值 除非显示的 指定一个值
文字相关的,颜色,字体 不给会继承
一些盒子模型 大小 不会继承

css可以和不可以继承的属性

不可继承的:display、margin、border、padding、background、height、min-height、max-height、width、min-width、max-width、
overflow、position、left、right、top、bottom、z-index、float、clear、table-layout、vertical-align、page-break-after、
page-bread-before和unicode-bidi。
所有元素可继承:visibility和cursor。
内联元素可继承:letter-spacing、word-spacing、white-space、line-height、color、font、font-family、
font-size、font-style、font-variant、font-weight、text-decoration、text-transform、direction。
终端块状元素可继承:text-indent和text-align。
列表元素可继承:list-style、list-style-type、list-style-position、list-style-image。
表格元素可继承:border-collapse。 

显示继承 inherit

例如 
* {
    box-sizing: inherit;
}
上边通过一个通配选择器 让所有的元素都可以继承 box-sizing
后面的元素都可以继承了

初始值

initial
一个元素 一直往上找 没找到继承的值
如果没有继承的值 就用初始值
一个元素 不可继承的 又没有指定值
或者可继承 没有继承到
            例如
                background-color: transparent;
                margin-left: 0;
            可以使用 initial 关键字 显示重置为初始值
                background-color: initial;

额外拓展

media https://developer.mozilla.org/zh-CN/docs/Web/CSS/@media */

CSS求值过程

image.png

布局 Layout

布局相关技术

常规流

    normal flow
               块级
               行级
               表格布局
               FlexBox
               Grid
                      盒模型
                        理解成一个一个的盒子
                        margin
                              margin跟padding一样,也有简洁写法。我们可以使用margin属性来设置四个方向的外边距。
                              在实际编程中,我们往往使用的是margin的这种高效简洁写法来编程。
                              margin-top--margin-right--margin-bottom--margin-left,即“上-右-下-左”。以下简写为
                              top--right--bottom--left。其中需要注意的是后三种情况,当有像素值缺省时,浏览器会自动对缺省像素按照
                              “bottom=top”和“left=right”的方法进行赋值。
                              指定元素四个方向的外边框
                              取值可以是长度 百分数 auto
                                auto
                                    ->左右都是auto
                                      会取中间值然后水平居中
                              百分数是相对于容器宽度
                                    margin collapse
                                    margin在垂直方向上有时候会出现边距的折叠融合合并
                                        如:上100px 下100px (margin-bottom: 100px 和 margin-top: 100px)
                                            两个组组件的间距 100px 而不是 200px
                                    **只会取两个边距中较大的,而不是相加**
            ##################### box-sizing:boder-box; 区别:包括padding 和 border 如 设置100% 实际小于 100% 页面无滚动 推荐 ##########            
                        
                        border
                             border 简写属性在一个声明设置所有的边框属性。可以按顺序设置如下属性:border-width border-style 
                             border-color
                            如果不设置其中的某个值,也不会出问题,比如 border:solid #ff0000; 也是允许的。
                            指定边框的样式,粗细和颜色。
                                三种属性
                                    border-width: 可以设置边框的宽度。
                                    border-style: 可以设置边框的样式。
                                    border-color: 可以设置边框的颜色。
                                四个方向
                                    border-top
                                    border-right
                                    border-bottom
                                    border-left
                                可以同时设置多个方向的边框。
                        padding
                                padding 简写属性在一个声明中设置所有内边距属性。可以按顺序设置如下属性:padding-top padding-right
                                指元素四个方向的内边距
                                百分数相对于容器宽度
                                          10px -> 四个都是10px
                                          10px 20px -> 左右两个是10px,上下两个是20px
                                          10px 20px 10px 20px -> 从上开始 顺时针转一圈
                                
                        content (width,height)
                            width -> 指定content box 宽度
                                     取值为 长度 百分数 auto
                                     auto 由浏览器根据其他属性确定
                                     百分数相对于容器的context box宽度
                            height -> 指定content box 高度
                                     取值为 长度 百分数 auto
                                     auto 由浏览器根据其他属性确定
                                     百分数相对于容器的context box高度
                                     容器有指定高度的时候,百分数才生效。
                        层层包裹    

浮动

    float
        可以文字 图片的一些效果

绝对定位

    position
            盖在常规流上面 任意的改变位置 对常规流不会有上面影响 

定位 position

定位属性:
    position: absolute;
    position: relative;
    position: fixed;
    position: sticky;
    position: static;
    position: initial;
    position: inherit;
    position: unset;
定位属性的值:
    static
    relative
    absolute
    fixed
    sticky
    initial
    inherit
    unset
定位属性的作用:
    定位元素的位置
    定位元素的大小
    定位元素的内容
    定位元素的父元素
    定位元素的兄弟元素
    定位元素的子元素
    定位元素的祖先元素
    定位元素的所有祖先元素
    定位元素的所有兄弟元素
    定位元素的所有子元素
    定位元素的所有祖先元素
    定位元素的所有子元素
    定位元素的所有祖先元素
    定位元素的所有子元素
    定位元素的所有祖先元素
    定位元素的所有子元素

overflow

overflow这个属性:

visible -> 超出可见 但是会超越设定的范围
    hidden ->  超出不可见
    scroll -> 超出可见 滚动

overflow-wrap:break-world;换行

块级 and 行级

行级由内容决定

Block Level Box           Inline Level Box
不和其他盒子并列摆放        和其他行级盒子一起放在一行或拆开成多行
适用所有的盒模型属性        盒模型中的width,height不适用

生成块级盒子               生成行级盒子
                          内容分散在多个行盒(line box)中
body,article,div          span,emstrong,cite,code等
main,section,h1-6,p
ul,li等
display: block;           display: inline;
(把任意一个元素转化成块级盒子或者行级盒子)
display 属性
        -> display: block;  => 块级盒子
        -> display: inline; => 行级盒子
        -> display: inline-block;   =>本身是行级,可以放在行盒中 可以设置宽高 作为一个整体不会被拆散成多行  (只能放在一行)
                                         例如 : 一个图片 可以和文字在一行展示 但是没办法 把图片分成两行展示。
        -> display: none;  => 排版时完全被忽略

行级的排版上下文

lnline Formatting Context(IFC)
只包含行级盒子的容器会创建一个IFC
IFC内的排版规则
    盒子在一行内水平摆放
    一行放不下的时候,换行显示
    text-align: 决定一行内盒子的水平对齐
        text-align: left;
        text-align: right;
    vertical-align: 决定一行内盒子的垂直对齐
        vertical-align: top;
        vertical-align: middle;
        vertical-align: bottom;
    避开浮动(float)元素

块级排版上下文

Block Formatting Context(BFC)
某些容器会创建一个BFC
    根元素
    浮动,绝对定位,inline-block
    Flex子项和Grid子项
    overflow值不是visible的块盒
    display: flow-root;
BFC内的排版规则
    盒子从上到下摆放
    垂直margin合并 之前的margin边距不是相加而是取最大
    BFC内盒子的margin不会与外面的合并  解决margin融合重叠问题 分开 放在不同的DFC中 嵌套div并设置display:flow-root;
    BFC不会和浮动元素重叠 清除浮动经常用的一个技巧
    

Flex Box

一种新的排版上下文
它可以控制子级盒子的:
    摆放的流向(上下左右)
    摆放的顺序
    盒子宽度和高度
    水平和垂直方向的对齐
    是否允许折行

使用

设置 display: flex;
遵循flex布局 而不是IFC BFC

控制流向
    flex-direction: row | column | row-reverse | column-reverse
    默认 row 反向 column
控制对齐
    传统 水平 垂直
    引入
        主轴 justify-cnontent
            flex-start | flex-end | center | space-between | space-around
            不设置
                默认 justify-content: flex-start;
            基线对齐
                align-items: flex-start | flex-end | center | baseline | stretch
        侧轴

Flexibility */

Flexibility
    可以设置子项的弹性,当容器有剩余空间是,会伸展,容器空间不够时,会收缩
    flex-grow 有剩余空间时的伸展能力
    flex-shrink 容器空间不足时收缩的能力
    flex-basis 没有伸展或收缩时的基础长度

Flex及FLex的缩写

flex:1                       flex-grow: 1;      弹簧,弹力
flex:100px                   flex-basis: 100px; 基础长度 没有设置 一般读取一些宽度和高度的值 直接写宽度也可以
flex:2 1                      flex-grow: 2;flex-shrink: 1;   
flex: auto
flex: none
flex: stretch               换行

Grid

区别:二维网格 Flex 一维
display: grid; => 创建一个Grid容器
使用grid-template 相关属性将容器划分为网格
    划分网格
        grid-template-columns: 100px 100px 200px;
        grid-template-rows: 100px 10px

        grid-template-columns: 30% 30% auto;
        grid-template-rows: 100px auto;

        grid-template-columns: 100px 1fr 1fr;
        grid-template-rows: 100px 1fr;  fr ==份

        上竖着 下横着
设置每一个子项栈哪些行列

grid lin 网格线

grid-row-start: 1;
grid-column-start: 1;
grid-column-end: 3;
grid-row-end: 3;
或者
grid-area: 1 / 1 / 3 / 3;

float 浮动

实现文字环绕的一个功能
可以使用float属性
    float: left;
    float: right;
    float: none;
    float: inherit;

position 绝对定位

position: static;     默认值,非特定元素
position: relative;   相当于自身位置做一个偏移,不脱离文档流
    ->  
        在常规流里面布局
        相对于自己本应该在的位置进行偏移
        使用top,left,bottom,right设置偏移长度
        流内其他元素当他没有偏移一样布局
position: absolute;   绝对定位,相对非static祖先元素定位
    ->
        脱离常规流
        相对于最近的非static祖先定位
        不好对流内元素布局造成影响
position: fixed;      相对于窗口绝对定位
    -> 
        和absolute区别,后者找父类。前者找窗口
                                        -> 导航栏
position: sticky;      粘性定位。
相关文章
学习CSS3 中的渐变、阴影与遮罩
CSS3的渐变、阴影和遮罩特性极大地丰富了网页设计。渐变让颜色平滑过渡,赋予页面流动美感;阴影增加元素立体感,引导视觉焦点;遮罩通过隐藏或显示部分元素创造独特视觉效果。这些特性组合使用,可打造丰富多彩、立体生动的视觉体验,并可通过CSS3动画增强动态效果,使网页更具活力。正确应用这些特性需考虑参数调整及跨浏览器兼容性,以确保最佳展示效果。
|
5天前
|
前端开发
CSS Grid 布局:span 关键字
CSS Grid 布局:span 关键字
14 0
|
7天前
|
前端开发 容器
css中弹性布局使用方法
css中弹性布局使用方法
17 0
|
7天前
|
编解码 前端开发 容器
CSS弹性布局:打造响应式与灵活的网页设计
CSS弹性布局:打造响应式与灵活的网页设计
19 0
|
7天前
|
JSON 前端开发 JavaScript
使用html,css,js 实现一个龙年春节祝福卡片效果
使用html,css,js 实现一个龙年春节祝福卡片效果
27 4
|
1月前
|
前端开发 UED
使用HTML和CSS创建响应式表格
在网页设计中,表格是一种组织和展示数据的有效方式。本文档将指导你如何使用HTML和CSS来创建一个既美观又响应式的表格,以便在不同设备和屏幕尺寸上都能良好显示。我们将涵盖基础的HTML表格结构,样式美化以及如何实现响应式布局,使得表格内容在小屏设备上也能清晰阅读
79 0
|
4天前
|
前端开发
HTML+CSS基础知识(6)背景的设置、表格的设计、表单的设计和框架集
这篇文章详细介绍了如何在HTML和CSS中设置背景、设计表格、创建表单以及使用框架集,并通过代码示例和测试结果展示了具体的实现方法和效果。
HTML+CSS基础知识(6)背景的设置、表格的设计、表单的设计和框架集
|
10天前
|
前端开发
【前端】校园二手书交易系统javascript+css+html (源码)【独一无二】
【前端】校园二手书交易系统javascript+css+html (源码)【独一无二】
|
1月前
|
前端开发 JavaScript
文本,wangEditor5展示HTML无样式,wangEditor5如何看源码,Ctrl + U看CSS文件,代码高亮,Prism.js可以实现,解决方法,参考网页源代码的写法
文本,wangEditor5展示HTML无样式,wangEditor5如何看源码,Ctrl + U看CSS文件,代码高亮,Prism.js可以实现,解决方法,参考网页源代码的写法
|
2月前
|
安全 JavaScript
旋转木马轮播图 html+css+js
旋转木马轮播图 html+css+js

热门文章

最新文章