CSS核心样式-02-盒模型属性及扩展应用

news2025/5/26 0:54:19

目录

三、盒模型属性

 常见盒模型区域

盒模型图

盒模型五大属性

1. 宽度 width

2. 高度 height

3. 内边距 padding

四值法

三值法

二值法

单值法

案例

4. 边框 border

按照属性值的类型划分为三个单一属性

①线宽 border-width

②线型 border-style

 ③边框颜色 border-color

根据边框的方向划分为四个单一属性

根据方向和类型综合划分

5. 外边距 margin

四个单一属性

复合属性的四种值的写法

四、盒模型扩展应用

1. 清除默认样式

①清除盒模型的内外边距

标签选择器的并集方式

通配符方式

②清除 ul 和 ol 两种列表的默认前缀

③清除 a 标签默认样式

④清除默认加粗效果

⑤设置初始化的公共样式

2. height 应用

情况一:必须设置高度

溢出盒子

overflow解决溢出问题

情况二:必须不设置高度

3. 居中

① 文本水平居中

② 文本垂直居中

单行文本垂直居中

多行文本垂直居中

③ 元素垂直居中

④ 元素水平居中

4. 父子盒模型

父元素的width ≥ 所有子元素width + padding + border + margin

特殊情况:盒模型自动内减

5. margin 塌陷现象

同级元素塌陷

父子元素塌陷

解决 margin 塌陷问题的方法

同级元素

父子元素


三、盒模型属性

盒模型又叫框模型,包含了五个用来描述盒子位置、尺寸的属性,分别是宽度 width、高度 height、内边距 padding、 边框 border、外边距 margin

 常见盒模型区域

盒模型的属性中,根据不同属性的效果,可以划分区域:

书写元素内容区域:width+height

• 盒子可以实体化的区域(也就是可以添加颜色显示出来的区域):width+height+padding+border

• 盒子实际占位的位置:width+height+padding+border+margin

盒模型图

学习过程中,学会查看浏览器控制台(右侧 computed 部分)中的盒模型图:

盒模型五大属性

 盒模型五大属性分别是:

宽度 width、高度 height、内边距 padding、 边框 border、外边距 margin

1. 宽度 width

  • 作用:设置可以添加元素内容的区域的宽度。
  • 属性值:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 300px;
            background-color: red;
        }
        p {
            width: 50%;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="box">
        <p>这是一段文字</p>
    </div>
</body>
</html>

p 的父级是 box,box 的父级是 body,p 的宽度就是 box 宽度的50%。

• 如果一个元素不添加width 属性,默认属性值为auto,不同的元素浏览器会根据其特点自动计算出实际宽度,例如 div 、p 元素等独占一行的,其 width 属性的值会自动撑满父元素的 width 100%区域,如果是 span 元素等不需要独占一行的,其 width 属性的值是根据内部元素内容自动撑开的宽度。

body 元素比较特殊,不需要设置 width 属性,宽度会自动适应浏览器窗口的宽度。

2. 高度 height

  • 作用:设置可以添加元素内容的区域的高度。
  • 属性值:

 与宽度 width 的属性值设置非常类似。

• 如果一个元素不添加 height 属性,默认属性值为auto,浏览器会自动计算出实际高度,也就是是内部元素内容自动撑开的高度。元素的高度自适应内部内容的高度。

3. 内边距 padding

  • 作用:设置的是元素的边框内部到宽高区域之间的距离。
  • 特点:可以去加载背景,不能书写嵌套的内容。
  • 属性值:常用 px 为单位的数值。
  • 如果设置  padding: 50px; 上下左右四个方向的内边距都是 50px 。

  •  padding 是一个复合属性,可以根据内边距的方向不同划分为四个方向的单一属性。

书写四个方向单一属性时,一般是按照顺时针规律书写:上、右、下、左。

 有时为了化简书写,一般习惯将四个方向的单一属性进行合写成 padding 属性。

padding 属性值:可以有 1-4 个值,值之间用空格进行分隔。

根据四个方向属性值不同,padding 有多种值的书写表示方法

根据 padding 的属性值的个数不同,区分了四种表示法:

四值法

设置四个属性值,分配方向上、右、下、左

三值法

设置三个值分配给上、左右、下

二值法

设置两个值,分配给上下、左右

单值法

设置属性值只有一个,分配方向上右下左,四边的值相同。

案例

制作三边内边距相同,一边不同。

方法①:使用四值法(10px 10px 10px 20px)、三值法(10px 10px 20px),进行属性值设置。

方法②(推荐使用):利用综合属性和单一属性之间的层叠,对综合属性设置单值法,将四边内边距设置相同,在后面使用单一属性写法,再次定义某个方向的属性值不同,可以实现单一属性层叠综合属性的一部分。

    <style>
        .box {
            width: 200px;
            height: 200px;
            background-color: red;
            padding: 10px;
            padding-right: 20px;
        }
        p {
            background-color: yellow;
        }
    </style>

让单一属性层叠掉综合属性中的某一个。案例中先写综合属性 padding: 10px; 使得四个方向内边距都是 10px ,然后想让哪个边不同就写哪个边,比如想让右边不同就写 padding-right: 20px; 即可实现,并且减少出错。

其中第二种用法更加灵活,推荐使用,使用过程中注意书写顺序,单一属性必须书写在后,才能层叠掉综合属性中重复的部分。

4. 边框 border

  • 作用:设置的是内边距外面的边界区域,作为盒子的实体化的最外层。
  • 属性值:由三个值组成,分别为线的宽度、线的形状、线的颜色
        <style>
            .box {
                width: 200px;
                height: 200px;
                background-color: red;
                border: 10px solid green;
            }
        </style>
  • border 属性是一个复合属性,根据划分依据不同可以有两种单一属性的划分方式。
按照属性值的类型划分为三个单一属性

划分为:

线宽:border-width

线型:border-style

颜色:border-color

①线宽 border-width
  • 作用:设置边框线的宽度。
  • 属性值:常用 px 形式的数值,四个方向都有边框,属性值类似于 padding,也有四种值的写法,即单值法二值法三值法四值法。
  •  <style>
            .box {
                width: 200px;
                height: 200px;
                background-color: red;
                border-width: 10px 20px 30px 40px;
            }
        </style>
②线型 border-style
  • 作用:设置边框的线条形状。
  • 属性值:形状的单词,总体也是类似 padding 的综合属性写法,也有单值法二值法三值法四值法的写法。
  • 属性值的单词可能性:

 <style>
        .box {
            width: 200px;
            height: 200px;
            background-color: red;
            border-width: 10px 20px 30px 40px;
            border-style: dashed solid groove inset;
        }
    </style>
 ③边框颜色 border-color
  • 作用:设置边框的颜色。
  • 属性值:颜色名或颜色值,整体类似 padding 综合属性写法,也有单值法二值法三值法四值法的写法。
        <style>
            .box {
                width: 200px;
                height: 200px;
                background-color: red;
                border-width: 10px 20px 30px 40px;
                border-style: dashed solid groove inset;
                border-color: red green yellow blue;
            }
        </style>
根据边框的方向划分为四个单一属性

划分为:

上边框:border-top

右边框:border-right

下边框:border-bottom

左边框:border-left

每个单一属性都必须与复合属性 border 一致,设置三个属性值。

    <style>
        .box {
            width: 200px;
            height: 200px;
            background-color: red;
            border-top: 10px solid green;
        }
    </style>
根据方向和类型综合划分

类似 border-top 的单一方向属性,也可以根据属性值类型继续进行单一属性划分。

单一属性写法:border-方向-类型。

注意:细分时必须先写方向划分再写类型划分,否则属性名错误。

    <style>
        .box {
            width: 200px;
            height: 200px;
            background-color: red;
            border-top-color: green;
        }
    </style>

5. 外边距 margin

  • 作用:设置的是盒子与盒子之间的距离。
  • 特点:不能渲染背景。
  • 属性值:常用 px 为单位的数值。
  • 外边距的设置方式与内边距 padding 一模一样。
四个单一属性

上 margin‐top: 20px;

右 margin‐right: 20px;

下 margin‐bottom: 10px;

左 margin‐left: 20px;

复合属性的四种值的写法

四值法 margin: 10px 20px 30px 40px;

三值法 margin: 10px 20px 30px;

二值法 margin: 10px 20px;

单值法 margin: 10px;

    <style>
        .box {
            width: 200px;
            height: 200px;
            background-color: red;
            margin: 10px 20px 30px 40px;
        }

四、盒模型扩展应用

虽然我们了解了盒模型的五个属性的基本语法, 但是在实际工作中还有更多的方法和技巧需要掌 握,因此,我们需要扩展对盒模型的应用知识。

1. 清除默认样式

大部分标签都有一个浏览器加载的默认样式,会对布局造成一些影响。为了避免默认样式对整体布局效果造成影响,一定要清除默认样式。

①清除盒模型的内外边距

盒模型(例如 body、div、p 等)属性中的内外边距:大部分容器级标签都有默认边距,要么用标签选择器的并集方式,要么用通配符全部清除。

本来设计图没有边距,但是这里都有默认边距,所以要清除默认样式:

标签选择器的并集方式
 <style>
       /* 标签选择器并集方式清除默认样式(可以提前考虑到还没写的标签) */
       body,div,h1,h2,h3,h4,h5,h6,p,ul,ol,li {
        margin: 0;
        padding: 0;
       }
 </style>
通配符方式

也可以使用这种简便方法,但仅仅适合一些小的案例

    <style>
       /* 通配符方式清除默认样式(通配符选中所有标签) */
       * {
        margin: 0;
        padding: 0;
       }
    </style>

通配符会选择所有,而标签选择器的并集方式会有针对性的进行选择,所以标签选择器的并集方式的效率要高一些

在实际项目中,一般用标签选择器的并集方式,如果是一些小案例,为了简化代码量可以使用通配符的方式。

②清除 ul 和 ol 两种列表的默认前缀

<ul> 和 <ol> 两种列表有默认的列表前缀,清除方式:使用 list-style 属性。

    <style>
       /* 清除 ul 和 ol 两种列表的默认前缀 */
       ul,ol {
        list-style: none;
       }
    </style>

③清除 a 标签默认样式

清除<a> 标签的默认样式,顺带设置页面中常用的 a 的公共样式:设置 color 和 text-decoration(可以通过设置color 使得a标签跟其他字体颜色一致,text-decoration设置清除下划线,主要就是想让a标签跟其他字体看起来一样,如果想让有的a标签不这样可以单独设置属性覆盖掉这个)。

    <style>
       /* 清除 a 标签默认属性 */
       a {
        color: blueviolet;
        text-decoration: none;
       }
    </style>
</head>
<body>
    <a href="">这是一个a标签</a>
</body>

④清除默认加粗效果

一些标签默认带加粗效果,比如h1-h6,b,strong,

清除默认加粗效果:设置font-weight。

    <style>
       /* 清除默认加粗效果 */
       h1,h2,h3,h4,h5,h6,b,strong {
        font-weight: normal;
       }
    </style>

⑤设置初始化的公共样式

一般除了清除默认样式之外,做项目时还会设置初始化的公共样式。

可以给 <body> 标签设置整体文字样式,让大部分后代标签全部去继承(body里面的所有标签都可以继承,注意h1-h6标题,他们也继承,但是他们有自己的font-size,所以继承的body的就被层叠掉了,所以他们的字体还是自己原来的样式)

    <style>
       /* 设置初始化的公共样式 */
       body {
        color: blue;
        font-size: 20px;
        font-family: Arial, "宋体";
       }
    </style>

2. height 应用

根据不同的需求,高度属性可以设置也可以不设置。
• 如果设置了高度:盒子占有的高度位置就确定死了,后面的同级元素会紧挨着在后面加载。
• 如果不设置高度:会根据标签内部内容高度自动撑开。

 以 <div> 标签为例,根据情况不同选择是否设置高度:

情况一:必须设置高度

设计图中盒子高度占位是固定的,后面同级元素在高度下面加载,这时候就必须设置高度。

溢出盒子

设置高度会产生一种情况:自身盒子内部内容过多会溢出盒子区域

盒子内部内容过多,但是盒子只有200px的高度,设置了高度后即使盒子装不下这些内容但是盒子也不会被撑开,这就是设置高度之后产生的效果。

span没有被挤走,还是在盒子下方

overflow解决溢出问题

对于这个问题,可以使用overflow 溢出属性进行解决。

设置了高度的盒子,如果内部元素的加载高度超过父级,会出现溢出效果。
可以通过一个溢出的属性 overflow,进行溢出部分内容的显示效果设置。

visible跟上面出现的情况一样

hidden是经常使用的(溢出隐藏)

scroll在水平和竖直方向各出现一个滚动条,溢出方向出现滑块

auto,类似于文本域textarea,无溢出就正常显示,有溢出就出现滚动条。

auto是哪个方向溢出就哪个方向出现滚动条,不溢出的不会出现;而scroll是无论是否溢出两个方向都会出现滚动条,而只有溢出的才会出现滑块进行滑动。

情况二:必须不设置高度

设计图要求盒子高度必须自适应内部内容的高度,这是就不能设置高度。

比如一些新闻下面有评论区,有的新闻长有的短,新闻设置自适应,新闻内容有多少盒子就自动撑高多少,评论区就在新闻下面。
这时可以选择不设置高度,或者设置height的属性值是自动的,二者效果相同

    <style>
       /* 设置高度为自动 */
       div {
        width: 200px;
        height: auto;
        border: 1px solid black;    
       }
    </style>

3. 居中

在网页中经常见到元素或者文字居中的效果。

① 文本水平居中

水平居中:text-align属性。(不论单行或多行都用这一条属性可以设置)

    <style>
       /* 设置文本水平居中 */
       p {
        width: 200px;
        height: auto;
        border: 1px solid black; 
        text-align: center;   
       }
    </style>

② 文本垂直居中

单行文本垂直居中

单行文本垂直居中:让文字行高 line-height 等于盒子高度 height

(因为文字在自己的行高中是垂直居中的,所以让文字行高等于盒子高度,那么文字就可以在盒子垂直居中了)。

    <style>
       /* 设置文本水平居中 */
       p {
        width: 200px;
        height: 200px;
        border: 1px solid black; 
        text-align: center;   
        line-height: 200px;
       }
    </style>
多行文本垂直居中

多行文本垂直居中:让存放文本的元素高度自适应或者设置元素内边距上下值相同

不设置元素高度:

设置元素内边距上下值相同:

    <style>
       /* 设置文本垂直居中--设置元素内边距上下相同 */
       p {
        width: 200px;
        border: 1px solid black; 
        text-align: center;  
        padding: 20px 0; 
       }
    </style>

③ 元素垂直居中

一个元素内部嵌套的子元素,在父元素中居中。
垂直居中:与多行文字类似,让父元素高度自适应,子元素高度自动撑开父级的高度,再给父元素设置相同的上下边距

    <style>
       /* 设置元素垂直居中 */
       /* 不给父元素设置高度让其自适应,但设置内边距上下相同 */
       .box {
        width: 200px;
        border: 2px solid greenyellow;
        padding: 20px 10px;
       }
       .demo {
        width: 100px;
        height: 100px;
        background-color: aqua;
       }
    </style>
</head>
<body>
    <div class="box">
        <div class="demo"></div>
    </div>
</body>

④ 元素水平居中

针对类似 <div> <p>样式上必须独占一行的盒子,如果子盒子宽度低于父盒子宽度,可以设置子盒子的 margin 值,水平方向的值都设置为 auto。(父子都是独占一行的盒子)
原因:auto 只在水平方向有作用,水平方向的 margin 如果设置为 auto,边距会自动无限增大,直到撑满整个父元素除了子元素宽度之外剩余的区域,如果两个水平方向都是 auto,两边都要无限大,只能达到一个平衡,两边距离相同,导致盒子居中。

    <style>
       /* 设置元素水平居中 */
       /* 父元素设置不变,子元素设置magin左右都为auto */
       .box {
        width: 200px;
        border: 2px solid greenyellow;
        padding: 20px 10px;
       }
       .demo {
        width: 100px;
        height: 100px;
        background-color: aqua;
        margin: 0 auto;
       }
    </style>
</head>
<body>
    <div class="box">
        <div class="demo"></div>
    </div>
</body>

4. 父子盒模型

父元素的width ≥ 所有子元素width + padding + border + margin

一般情况下,一个父元素内部可以放一个或多个子元素,而且多个子元素要排成一行显示,必须保证父元素的宽度一定要足够(不考虑溢出情况),需要遵循一个设置尺寸的规律:所有子元素的宽度加在一起不能大于父元素的宽度 width。
父元素的width ≥ 所有子元素width + padding + border + margin
如果不满足条件:要么多余的子元素掉下来,不能在一排,要么溢出父元素

(float: left;浮动属性,添加后就可以让本来独占一行的四个<p>标签排成一排)

    <style>
        /* 首先清除一下默认样式 */
        * {
            margin: 0;
            padding: 0;
        }
       .box1 {
        width: 1000px;
        height: 100px;
        border: 1px solid green;
       }
       .box1 p {
        float: left;
        width: 200px;
        height: 100px;
        background-color: blue;
        margin-right: 10px;
       }
    </style>
</head>
<body>
    <div class="box1">
        <p>1</p>
        <p>2</p>
        <p>3</p>
        <p>4</p>
    </div>
</body>

否则,比如将子盒子的magin-right的值改为60px,子盒子就会掉下来:

magin-right的值极限是50px,子盒子刚好排成一排;51px都不可以。

另一种情况:父子盒模型中,只有一个子元素,且子元素是类似 <div> 标签必须占一行的。他不会出现上述那种掉下去的情况,但是他会出现溢出的情况。

父盒子是200×200,但是子盒子是(200+20)×(200+20),子盒子溢出。

经过上述两种情况:

所以,后续做项目时,计算或量取尺寸时一定要计算准确,一像素都不能偏差。

特殊情况:盒模型自动内减

对于上面第二种,即父子盒模型中,只有一个子元素,且子元素是类似 <div> 标签必须占一行的,有一种特殊的解决方式,即盒模型自动内减的方式。

解决方式:不设置子元素的 width 属性,子元素的 width 属性值会自动加载父级元素的 width。

如果同时设置了子元素水平方向的 padding 和 border 、margin,不需要手动去进行内减(像上面那种,要想子盒子不超出父盒子,width要变成180,加上border的20才能刚好是200,不需要手动减,如果不设置子元素的 width 属性运行程序会自动将width变成180),子元素的 width 会自动收缩尺寸。

子元素所有的水平方向的位置所有属性的加和等于父元素的 width 。

5. margin 塌陷现象

margin 塌陷现象:在垂直方向如果有两个元素的外边距有相遇的,浏览器中加载的真正的外边距不是两个间距的加和,而是两个边距中值较大的,边距值小的塌陷到了边距值大的值内部。

同级元素塌陷

上面的元素有下边距,下面的元素有上边距,两个边距相遇,真正的盒子间距离是较大的那个值。

父子元素塌陷

父子元素之间也会出现 margin 塌陷,父元素和子元素都设置了同方向的margin-top 值,两个属性之间没有其他的内容进行隔离(中间没有padding 或者border将两个元素隔开),导致两个属性相遇,发生margin 塌陷。

本身父元素与上一个元素的距离是0,子元素如果设置了垂直方向的上边距,会带着父级一起掉下来。

解决 margin 塌陷问题的方法

同级元素

同级元素:如果两个元素垂直方向有间距,只需要设置给一个元素,不要进行拆分。

想让上面盒子与下面盒子之间有50px间距时,没必要将50拆成20和30,只需要将50给其中任何一个元素即可。

父子元素

父子元素:

让两个边距不要相遇,中间可以使用父元素 border 或 padding 将边距分隔开;

更加常用的方法,父子盒模型之间的距离就不要用儿子的 margin 去踹出来,而是父级的 padding 挤出来。(一般不用子元素的magin,而是使用父级的padding)

另外注意:水平方向的 margin 没有塌陷现象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1593071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源项目one-api的k8s容器化部署(下)-- 部署至k8s

一、接着上文 本文讲述如何把上文制作好的docker镜像部署到K8S&#xff0c;会涉及以下部分&#xff1a; 健康检测应用程序的配置应用程序的端口日志路径 二、健康检测 1、健康状态 从官方的docker-compose.yml可以得知其健康检测方法 curl http://localhost:5175/api/statu…

正则表达式:特殊序列(五)

正则表达式中的特殊序列包括&#xff1a;1. \d&#xff1a;匹配任意数字字符&#xff0c;等同于[0-9]。2. \D&#xff1a;匹配任意非数字字符&#xff0c;等同于[^0-9]。3. \w&#xff1a;匹配任意字母、数字或下划线字符&#xff0c;等同于[A-Za-z0-9_]。4. \W&#xff1a;匹配…

电路知识分享

电路 1. 基尔霍夫 KCL 定律 基尔霍夫定律包括电流定律和电压定律 电流定律KCL&#xff1a;在电路中&#xff0c;任何时刻&#xff0c;对任一节点&#xff0c;所有流出节点的支路电流的代数和恒等于零。 电压定律KVL&#xff1a;在集总电路中&#xff0c;任何时刻&#xff0…

3D场景编辑方法——CustomNeRF

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;3D场景编辑方法——CustomNeRF1、研究背景2、提出方法3、CustomNeRF3.1、整体框架步骤3.2、对特定问题的解决 4、实验结果5、总结…

支持向量机模型

通过5个条件判定一件事情是否会发生&#xff0c;5个条件对这件事情是否发生的影响力不同&#xff0c;计算每个条件对这件事情发生的影响力多大&#xff0c;写一个支持向量机模型程序,最后打印5个条件分别的影响力。 示例一 为了计算每个条件对一件事情发生的影响力&#xff0c…

年龄与疾病c++

题目描述 某医院想统计一下某项疾病的获得与否与年龄是否有关&#xff0c;需要对以前的诊断记录进行整理&#xff0c;按照0-18岁、19-35岁、36-60岁、61以上&#xff08;含61&#xff09;四个年龄段统计的患病人数以及占总患病人数的比例。 输入 共2行&#xff0c;第一行为过…

JavaSE——常用API进阶二(3/8)-Date、SimpleDateFormat(构造器、常用的方法、用法示例、时间格式的常见符号)

目录 Date 构造器、常用的方法 用法示例 SimpleDateFormat 构造器、格式化时间的方法 时间格式的常见符号 用法示例 解析字符串时间成为日期对象 接下来会学习JDK8以前传统的日期、时间&#xff0c;以及JDK8开始新增的日期、时间&#xff1b;有部分项目还是有在使用JDK…

雷霆传奇H5_源码搭建架设_神魔之魔改龙珠2

本教程仅限学习使用&#xff0c;禁止商用&#xff0c;一切后果与本人无关&#xff0c;此声明具有法律效应&#xff01;&#xff01;&#xff01;&#xff01; 一. 效果演示 雷霆传奇H5_源码搭建架设_神魔之魔改龙珠2 联网环境&#xff1a; centos7.6 &#xff0c; 放开所有端口…

数据治理专家岗位的能力模型

数据治理专家的角色要求其具备全方位的专业素养与技能&#xff0c;不仅要有深厚的业务理解与数据技术功底&#xff0c;还需展现出卓越的领导力、团队协作与沟通能力&#xff0c;以驱动组织内部数据治理工作的高效运行与持续优化。以下是对数据治理专家各项能力的深入解读&#…

算法题 - 双指针

目录 125. 验证回文串392. 判断子序列167. 两数之和 Ⅱ - 输入有序数组11. 盛最多的水15. 三数之和 125. 验证回文串 LeetCode_link 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 …

【问题篇】activiti工作流流程图更新后旧数据问题

互相学习交流 当我们使用activiti开发工作流时&#xff0c;项目上线后可能修改需求导致修改流程图也是很常见的情况。但是activiti更新流程图后&#xff0c;以前的流程实例并不会也跟着更新&#xff0c;activiti会保存每一份的流程图版本&#xff0c;只有新发起的流程实例才会…

架构设计-权限系统之通用的权限系统设计方案

一个系统&#xff0c;如果没有安全控制&#xff0c;是十分危险的&#xff0c;一般安全控制包括身份认证和权限管理。用户访问时&#xff0c;首先需要查看此用户是否是合法用户&#xff0c;然后检查此用户可以对那些资源进行何种操作&#xff0c;最终做到安全访问。身份认证的方…

spring boot集成logback到mysql 8

spring boot集成logback到mysql 8 依赖数据库准备创建log日志用户&#xff0c;并创建数据库执行建表sql 配置文件bugbug 1&#xff1a;Failed to instantiate type ch.qos.logback.classic.db.DBAppenderbug信息&#xff1a;解决&#xff1a; bug2: DBAppender cannot function…

开源博客项目Blog .NET Core源码学习(14:App.Hosting项目结构分析-2)

开源博客项目Blog的前台页面&#xff08;如下图所示&#xff09;的控制器类保存在App.Hosting项目的Controllers文件夹内&#xff0c;页面保存在Views文件夹内&#xff0c;网页中使用的图标、js、css文件等保存在wwwroot文件中。 前台各个页面、Controller文件夹中的控制器类及…

上位机图像处理和嵌入式模块部署(镜头和相机的选择)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在机器视觉当中&#xff0c;除了光源比较重要之外&#xff0c;另外最最重要的就是镜头和相机的选择了。通常来说&#xff0c;镜头是机械和光学装置…

【算法】分治-快排

个人主页 &#xff1a; zxctscl 如有转载请先通知 题目 前言1. 75. 颜色分类1.1 分析1.2 代码 2. 912. 排序数组2.1 分析2.2 代码 3. 215. 数组中的第K个最大元素3.1 分析3.2 代码 4. LCR 159. 库存管理 III4.1 分析4.2 代码 前言 分治就是分而治之 1. 75. 颜色分类 1.1 分析…

解决vue3更新chunk包后,点击页面报错

出现错误 解决思路 试了好多方法&#xff0c;跳了很多坑&#xff0c;router版本对不上&#xff0c;解决方案不实用。最后我直接捕获异常&#xff0c;刷新页面&#xff0c;解决最快最有效。 // vue-rotuer版本 "vue-router": "^4.0.3"解决方案 在router/…

(学习日记)2024.04.18:UCOSIII第四十六节:CPU利用率及栈检测统计

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

【iOS ARKit】Web 网页中嵌入 AR Quick Look

在支持 ARKit 的设备上&#xff0c;iOS 12 及以上版本系统中的 Safari浏览器支持 AR Quick Look&#xff0c; 因此可以通过浏览器直接使用3D/AR 的方式展示 Web 页面中的模型文件&#xff0c;目前 Web 版本的AR Quick Look 支持USDZ 格式文件。苹果公司有一个自建的3D模型示例库…

社交革命的引领者:探索Facebook的创新策略

1. 引言&#xff1a;社交媒体的崛起 社交媒体的兴起标志着信息时代的到来&#xff0c;它不仅改变了人们的生活方式&#xff0c;也影响着整个社会结构。作为社交媒体的先驱者&#xff0c;Facebook以其创新的策略和领先的技术&#xff0c;成为了这场社交革命的引领者。从2004年马…