前端学习 -- Css -- 盒子模式

简介: 框模型:CSS处理网页时,它认为每个元素都包含在一个不可见的盒子里。 为什么要想象成盒子呢?因为如果把所有的元素都想象成盒子,那么我们对网页的布局就相当于是摆放盒子。我们只需要将相应的盒子摆放到网页中相应的位置即可完成网页的布局。

框模型:

CSS处理网页时,它认为每个元素都包含在一个不可见的盒子里。
为什么要想象成盒子呢?因为如果把所有的元素都想象成盒子,那么我们对网页的布局就相当于是摆放盒子。
我们只需要将相应的盒子摆放到网页中相应的位置即可完成网页的布局。

 

一个盒子我们会分成几个部分:
– 内容区(content)上图的element区域
– 内边距(padding)
– 边框(border)
– 外边距(margin)

内容区

内容区指的是盒子中放置内容的区域,也就是元素中的文本内容,子元素都是存在于内容区中的。
如果没有为元素设置内边距和边框,则内容区大小默认和盒子大小是一致的。
通过width和height两个属性可以设置内容区的大小。
width和height属性只适用于块元素。

内边距

顾名思义,内边距指的就是元素内容区与边框以内的空间。
默认情况下width和height不包含padding的大小。
使用padding属性来设置元素的内边距。
例如:
padding:10px 20px 30px 40px
这样会设置元素的上、右、下、左四个方向的内边距。

padding:10px 20px 30px;
– 分别指定上、左右、下四个方向的内边距
padding:10px 20px;
– 分别指定上下、左右四个方向的内边距
padding:10px;
– 同时指定上左右下四个方向的内边距
同时在css中还提供了padding-top、padding-right、padding-right、padding-bottom分别用来指定四个方向的内边距。

内边距会影响盒子的可见框的大小,元素的背景会延伸到内边距,
盒子的大小由内容区、内边距和边框共同决定
盒子可见框的宽度 = border-left-width + padding-left + width + padding-right + border-right-width
可见宽的高度 = border-top-width + padding-top + height + padding-bottom + border-bottom-width

边框

可以在元素周围创建边框,边框是元素可见框的最外部。
可以使用border属性来设置盒子的边框:
– border:1px red solid;
– 上边的样式分别指定了边框的宽度、颜色和样式。
也可以使用border-top/left/right/bottom分别指定上右下左四个方向的边框。
和padding一样,默认width和height并包括边框的宽度。

边框的样式

边框可以设置多种样式:
– none(没有边框)
– dotted(点线)
– dashed(虚线)
– solid(实线)
– double(双线)
– groove(槽线)
– ridge(脊线)
– inset(凹边)
– outset(凸边)

外边距

外边距是元素边框与周围元素相距的空间。
使用margin属性可以设置外边距。
用法和padding类似,同样也提供了四个方向的margin-top/right/bottom/left。
当将左右外边距设置为auto时,浏览器会将左右外边距设置为相等,所以这行代码margin:0 auto可以使元素居中。

 举个例子:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            .box{
                width: 200px;
                height: 200px;
                background-color: cadetblue;
                border-width:10px 20px 30px 40px ;
                border-style: solid dotted dashed double;
                border-color: red yellow orange blue;
            }
        </style>
    </head>

    <body>
        <div class="box"></div>
    </body>

</html>

效果:

 示例代码可以看:https://github.com/soyoungboy/htmlCssStudy/blob/master/HelloHBuilder/lesson12.html

具体可以看下运行效果

 

内边距demo:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            .box {
                width: 200px;
                height: 200px;
                background-color: cadetblue;
                border-width: 10px;
                border-style: solid;
                border-color: red;
                padding: 10px 20px 30px 40px;
            }
            
            .box1 {
                width: 100%;
                height: 100%;
                background-color: yellow;
            }
        </style>
    </head>

    <body>
        <div class="box">
            <div class="box1"></div>
        </div>
    </body>

</html>

看下效果:

代码见:https://github.com/soyoungboy/htmlCssStudy/blob/master/HelloHBuilder/lesson13.html

具体可以看下运行效果

 

外边距demo:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            .box {
                width: 200px;
                height: 200px;
                background-color: cadetblue;
                margin-top: 100px;
                margin-left: 100px;
            }
            
            .box1 {
                width: 100%;
                height: 100%;
                background-color: yellow;
            }
            
            .box2 {
                width: 200px;
                height: 200px;
                background-color: green;
                margin-left: -100px;
            }
            
            .box3 {
                width: 200px;
                height: 200px;
                background-color: red;
                margin-left: auto;
                margin-right: auto;
            }
            
            .box4 {
                width: 200px;
                height: 200px;
                background-color: blue;
                margin: 50px;
            }
        </style>
    </head>

    <body>
        <div class="box">
            <div class="box1"></div>
        </div>
        <div class="box2"></div>
        <div class="box3"></div>
        <div class="box4"></div>
    </body>

</html>

看下效果:

代码见:https://github.com/soyoungboy/htmlCssStudy/blob/master/HelloHBuilder/lesson14.html

具体可以看下运行效果

垂直外边距的重叠

- 在网页中相邻的垂直方向的外边距会发生外边距的重叠;所谓的外边距重叠指兄弟元素之间的相邻外边距会取最大值而不是取和,如果父子元素的垂直外边距相邻了,则子元素的外边距会设置给父元素。(经过测试,貌似第二条不对,也是取得父子元素中最大值)

例子:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            /**
             * box1距离box2距离取最大值 150
             */
            .box1{
                width: 100px;
                height: 100px;
                background-color: red;
                margin-bottom: 150px;
                
            }
            
            .box2{
                width: 100px;
                height: 100px;
                background-color: green;
                margin-top: 100px;
            }
            
            /**
             * 父子元素
             * box4子元素
             * box3父元素
             * box4元素的外边距设置给父元素box3
             */
            .box3{
                width: 200px;
                height: 100px;
                background-color: yellow;
                margin-top: 200px;
            }
            
            .box4{
                width: 100px;
                height: 100px;
                background-color: yellowgreen;
                margin-top: 100px;
            }
            
        </style>
    </head>
    <body>
        
        <div class="box3">
            <div class="box4"></div>
        </div>
        
        <div class="box1"></div>
        <div class="box2"></div>
    </body>
</html>

效果:

相关文章
|
2天前
|
前端开发
|
4天前
|
前端开发
【Web前端】CSS基本语法规范和引入方式&&常见选择器用法&&常见元素属性
【Web前端】CSS基本语法规范和引入方式&&常见选择器用法&&常见元素属性
|
14天前
|
缓存 移动开发 前端开发
【专栏:HTML与CSS前端技术趋势篇】HTML与CSS在PWA(Progressive Web Apps)中的应用
【4月更文挑战第30天】PWA(Progressive Web Apps)结合现代Web技术,提供接近原生应用的体验。HTML在PWA中构建页面结构和内容,响应式设计、语义化标签、Manifest文件和离线页面的创建都离不开HTML。CSS则用于定制主题样式、实现动画效果、响应式布局和管理字体图标。两者协同工作,保证PWA在不同设备和网络环境下的快速、可靠和一致性体验。随着前端技术进步,HTML与CSS在PWA中的应用将更广泛。
|
14天前
|
前端开发 JavaScript 开发者
【专栏:HTML与CSS前端技术趋势篇】前端框架(React/Vue/Angular)与HTML/CSS的结合使用
【4月更文挑战第30天】前端框架React、Vue和Angular助力UI开发,通过组件化、状态管理和虚拟DOM提升效率。这些框架与HTML/CSS结合,使用模板语法、样式管理及组件化思想。未来趋势包括框架简化、Web组件标准采用和CSS在框架中角色的演变。开发者需紧跟技术发展,掌握新工具,提升开发效能。
|
14天前
|
前端开发 JavaScript UED
【专栏:HTML 与 CSS 前端技术趋势篇】Web 性能优化:CSS 与 HTML 的未来趋势
【4月更文挑战第30天】本文探讨了CSS和HTML在Web性能优化中的关键作用,包括样式表压缩、选择器优化、DOM操作减少等策略。随着未来趋势发展,CSS模块系统、自定义属性和响应式设计将得到强化,HTML新特性也将支持复杂组件构建。同时,应对浏览器兼容性、代码复杂度和性能功能平衡的挑战是优化过程中的重要任务。通过案例分析和持续创新,我们可以提升Web应用性能,创造更好的用户体验。
|
14天前
|
移动开发 前端开发 UED
【专栏:HTML与CSS前端技术趋势篇】渐进式增强与优雅降级在前端开发中的实践
【4月更文挑战第30天】前端开发中的渐进式增强和优雅降级是确保跨浏览器、跨设备良好用户体验的关键策略。渐进式增强是从基础功能开始,逐步增加高级特性,保证所有用户能访问基本内容;而优雅降级则是从完整版本出发,向下兼容,确保低版本浏览器仍能使用基本功能。实践中,遵循HTML5/CSS3规范,使用流式布局和响应式设计,检测浏览器特性,并提供备选方案,都是实现这两种策略的有效方法。选择合适策略优化网站,提升用户体验。
|
14天前
|
前端开发 开发者 UED
【专栏:HTML与CSS前端技术趋势篇】网页设计中的CSS Grid与Flexbox之争
【4月更文挑战第30天】本文对比了CSS Grid和Flexbox两种布局工具。Flexbox擅长一维布局,简单易用,适合导航栏和列表;CSS Grid则适用于二维布局,能创建复杂结构,适用于整个页面布局。两者各有优势,在响应式设计中都占有一席之地。随着Web标准发展,它们的结合使用将成为趋势,开发者需掌握两者以应对多样化需求。
|
前端开发 容器
CSS 的布局 盒子
CSS 的布局 盒子
106 0
CSS 的布局 盒子
|
Web App开发 前端开发 测试技术
CSS布局之-盒子(Box)
一、 前言 盒子(一个块)是CSS布局中最基础的东西,如果你没完全搞清楚盒子是怎么回事,那么你在布局中将会很纠结,今天把它搞明白吧。文章中有误的地方,麻烦您指正。 二、 什么是CSS盒子呢? 现在很多的书籍和教程都在说“DIV+CSS”,首先,我不太喜欢这个名字,原因很简单,难道写页面只用到DIV吗?为什么不说HTML+CSS呢,这样不是更好?所以,任何事情都不能走极端,(DIV用多了也不好)。
1327 0