CSS布局(二) 盒子模型属性

盒子模型的属性

宽高width/height

  在CSS中,可以对任何块级元素设置显式高度。

  如果指定高度大于显示内容所需高度,多余的高度会产生一个视觉效果,就好像有额外的内边距一样;

  如果指定高度小于显示内容所需高度,取决于overflow属性,需要滚动条需要设置为overflow:auto。

auto

  宽高和margin可以设置auto。对于块级元素来说,宽度设置为auto,则会尽可能的宽。详细来说,元素宽度=包含块宽度—元素水平外边距-元素水平边距宽度-元素水平内边距;

  高度设置为auto,则会尽可能的窄。详细来说,元素高度=恰好足以包含其内联内容的高度

  [注意]如果没有显式声明包含块的height,则元素的百分数高度会重置为auto

最大最小宽高】

min-width | min-height

  初始值: 0

  应用于: 块级元素和替换元素

  百分数: 相对于包含块的宽度(高度)

max-width | max-heightt

  初始值: none

  应用于: 块级元素和替换元素

  百分数: 相对于包含块的宽度(高度)

[注意]当最小宽度(高度)大于最大宽度(高度)时,以最小宽高的值为准

内边距padding

  相比于盒模型的其他属性(如在定位中经常使用负值的margin),padding显得中规中矩了很多,没有什么兼容性,也没有一些特殊的问题

  对于行内元素,左内边距应用到元素的开始处,右内边距应用到元素的结尾处,垂直内边距不影响行高,但会影响自身尺寸,加背景颜色可以看出

  [注意]内边距不能是负值

padding

  初始值: 未定义

  百分数: 相对于包含块的width

【50%】

  块级元素通过padding:50%可以实现正方形的效果,因为水平和垂直padding的百分比值都是相对于包含块的宽度决定的,常常用于移动端头图

 外边距margin

设置外边距margin会在元素外创建额外的空白,空白通常指不能放其他元素的区域,而且在这个区域中可以看到父元素的背景

margin

  初始值: 未定义

  应用于: 所有元素

  百分数: 相对于包含块的width

[注意]对于普通元素来说,包含块就是块级父级元素,对于定位元素来说,包含块是定位父级。所以,普通元素的margin百分比相对于块级父级元素的width,定位元素的margin百分比相对于定位父级的width

margin可以设置为负值,margin和宽高支持auto,以及margin具有非常奇怪的重叠特性。

介绍外边距margin的几个重点部分,包括重叠、auto和无效情况

1.重叠

【前提】

??margin重叠又叫margin合并,发生这种情况有两个前提

??1、只发生在block元素上(不包括float、absolute、inline-block元素)

??2、只发生在垂直方向上(不考虑writing-mode)

【分类】

??margin重叠的情况

1、相邻的兄弟元素

<style>
p{
    line-height: 2em;
    margin: 2px 0;
    background-color: lightblue;
    display:inline-block;
    width: 100%;
}
</style>
<p>兄弟一</p>
<p>兄弟二</p>

2、父级元素和第一个或最后一个子元素,父子级的margin重叠又叫margin传递

<style>
.box{
    background-color: pink;
    height:30px;
}
.inner{
    margin-top: 1em;
    background-color: lightblue;
}
</style>
<div class="box">
    <div class="inner">子级</div>
</div> 

在网页布局中,因为margin重叠的原因,我们常常把margin作为一个“问题样式”而尽量少地使用它。但实际上,它是在很大的作用的,

所以,我们要善用重叠,可以在列表项中同时使用margin-top和margin-bottom。这样,使页面结构更具有健壮性,最后一个元素移除或位置调换,都不会破坏原生的布局

2.auto

??只有width/height和margin可以设置auto。

【为什么margin:auto无法实现垂直居中】

??水平方向可以居中是因为块级元素的宽度默认是撑满父级元素的,如果给宽度设置一个固定值,而左右margin设置为auto,则可以平分剩余空间

??垂直方向不可以居中是因为块级元素的高度默认是内容高度,与父级元素的高度并没有直接的关系,而上下margin设置为auto,则被重置为0

margin: 0 auto;

【为什么图片使用margin:auto不能水平居中】

??图片无法水平居中,类似于块级元素无法垂直居中。因为图片的宽度width默认是自身宽度,与父元素的宽度没有直接关系。左右margin设置为auto,会被重置为0

??所以,图片要水平居中,需要设置为display:block元素

3.无效情形

??1、行内元素垂直margin无效

??因为行内元素垂直布局主要是通过行高line-height和垂直对齐vertical-align来影响的,垂直margin并不会影响它们,所以不会影响垂直布局。而在显示方式,margin区域不会显示元素背景,所以也不会影响自身元素的显示,所以行内元素垂直margin无效。[注意]不包括inline-block

  2、某些表格类元素margin无效

<thead>``<tbody>``<tfoot>``<tr>``<col>``<colgroup>``<td>``<th>  不可设置margin。

  3、BFC造成的margin看似无效

??左侧元素使用浮动,右侧元素使用overflow-hidden实现两栏自适应的布局时,右侧元素的margin-left值只有足够大,才能看到效果。这是因为margin-left是相对于父元素左侧,而不是图片右侧

边框border

  元素外边距内就是元素的边框border,边框由粗细、样式和颜色三部分组成,且先后顺序无关

基础样式

 border: border-width border-color border-style
 border: 1px red solid;

边框样式

??如果一个边框没有样式,边框将根本不会存在

??关于虚线dashed,在chrome/firefox下,虚线宽高比是3/1;而在IE下,虚线宽高比为2/1。所以在IE下虚线显得比较密

??关于点线dotted,在chrome下,点线是方点;而在IE/firefox下,点线是圆点

border-style:none(默认)
border-style:hidden/dotted/dashed/solid/double/groove/ridge/inset/outset(共9种)

边框单边

  border-top/border-right/border-bottom/border-left

圆角边框

border-radius: none(默认)
border-radius: 6pxborder-radius: 10px 20px 30px 40px   四值顺序是左上、右上、右下、左下border-top-left-radius: 10px 20px;   左上

【特殊图形】

圆形

??元素的宽高相同,且圆角半径为宽高的一半

div{
    width: 100px;
    height: 100px;
    border-radius: 50%;
}

半圆

??元素宽高不同,且圆角半径与宽高要配合

div{
    width: 100px;
    height: 50px;
    border-radius: 50px 50px 0 0;
}

扇形

??元素宽高及一个圆角半径相同

div{
    width: 50px;
    height: 50px;
    border-radius: 50px 0 0 0;
}  

盒子阴影

??盒子阴影box-shadow可以为元素设置阴影

box-shadow: none(默认)
box-shadow: (h-shadow v-shadow blur spread color inset)+;

h-shadow: 水平阴影位置(必须)
v-shadow: 垂直阴影位置(必须)
blur:     模糊距离(可选)
spread:   阴影尺寸(可选)
color:    阴影颜色,默认和文本颜色一致(可选)
inset:    内部阴影(可选)
box-shadow:10px 10px red,20px 20px blue;

??使用盒子阴影box-shadow时,有如下几点注意事项:

??1、可以使用多重阴影,但使用过多会造成性能差

??2、边框在内阴影之上,内阴影在背景图片之上,背景图片在背景色之上,背景色在外阴影之上

??3、内阴影对<img>元素没有任何效果

??4、最先写的阴影在最顶层

??5、该属性与border-radius一脉相承,若通过border-radius设置为圆角,则box-shadow的最终呈现也将是圆角

原文地址:https://www.cnblogs.com/chaixiaozhi/p/8480846.html

时间: 2024-10-06 04:32:31

CSS布局(二) 盒子模型属性的相关文章

标准W3C盒子模型和IE盒子模型CSS布局经典盒子模型(转)

盒子模型是css中一个重要的概念,理解了盒子模型才能更好的排版.其实盒子模型有两种,分别是 ie 盒子模型和标准 w3c 盒子模型.他们对盒子模型的解释各不相同,先来看看我们熟知的标准盒子模型: 从上图可以看到标准 w3c 盒子模型的范围包括 margin.border.padding.content,并且 content 部分不包含其他部分. ie 盒子模型 从上图可以看到 ie 盒子模型的范围也包括 margin.border.padding.content,和标准 w3c 盒子模型不同的是

CSS定位元素--盒子模型

页面版式主要由三个属性控制: position 属性. display 属性和 float 属性.其中,position 属性控制页面上元素间的位置关系, display 属性控制元素是堆叠.并排,还是根本不在页面上出现, float 属性提供控制的方式,以便把元素组成成多栏布局. 盒子模型有关的三个属性 边框(border) .可以设置边框的宽窄.样式和颜色. 内边距(padding) .可以设置盒子内容区与边框的间距. 外边距(margin) .可以设置盒子与相邻元素的间距. 边框(bord

DIV+CSS两种盒子模型(W3C盒子与IE盒子)

在辨析两种盒子模型之前,先简单说明一下什么叫盒子模型. 原理: 先说说我们在网页设计中常听的属性名:内容(content).填充(padding).边框(border).边界(margin), CSS盒子模式都具备这些属性. 这些属性我们可以把它转移到我们日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子也就是能装东西的一种箱子,也具有这些属性,所以叫它盒子模式. 特点: 每个盒子都有:边界.边框.填充.内容四个属性: 每个属性都包括四个部分:上.右.下.左:这四部分可同时设置,也可分别设置

CSS Flexbox 弹性盒子模型

CSS Flexbox 弹性盒子模型 设置元素样式为 display: flex 或 display: inline-flex, 让元素变成flex容器, 从而可以通过flex模式布局它的子元素. flex-direction: 值 row | row-reverse | column | column-reverse默认值 row flex-wrap: 值 nowrap | wrap | wrap-reverse默认值 nowrap flex-flow: 值 <flex-direction>

CSS学习之盒子模型

1. 前言 盒子模型,英文即box model.无论是div.span.还是a都是盒子. 但是,图片.表单元素一律看作是文本,它们并不是盒子.这个很好理解,比如说,一张图片里并不能放东西,它自己就是自己的内容. 2. 盒子中的区域 一个盒子中主要的属性就5个:width.height.padding.border.margin.如下: width和height:内容的宽度.高度(不是盒子的宽度.高度). padding:内边距. border:边框. margin:外边距. 盒子模型的示意图:

CSS网页布局:盒子模型

一.盒子模型 标准盒子模型(W3C盒子) 不论是标准盒模型还是IE盒子模型,都有content.padding.border.margin四个部分组成,但从上图也可以看出W3C盒子和IE盒子主要区别在与content宽度上的区别 w3c中的盒子模型的宽:包括margin+border+padding+width; width:margin*2+border*2+padding*2+width; height:margin*2+border*2+padding*2+height; iE中的盒子模型

深度理解div+css布局嵌套盒子

1. 网页布局概述 网页布局的概念是把即将出现在网页中的所有元素进行定位,而CSS网页排版技术有别于传统的网页排版方法,它将页面首先在整体上使用<div>标记进行分块,然后对每个快进行CSS定位以及设置显示效果,最后在每个块中添加相应的内容.利用CSS排版方法更容易地控制页面每个元素的效果,更新也更容易,甚至页面的拓扑结构也可以通过修改相应的CSS属性来重新定位.  2. 盒子模型 盒子模型是CSS控制页面元素的一个重要概念,只有掌握了盒子模型,才能让CSS很好地控制页面上每一个元素,达到我们

web第六天,CSS优先级与盒子模型

一,CSS继承 文字相关的样式可以被继承 例 : color   line-height   font-style   font-size   font-weight 布局相关的样式不能被继承 (默认行为) 通过设置inherit值,可以改变默认的继承方式. 二,CSS优先级 相同样式优先级 当设置相同样式时,后写的优先级较高,但不建议出现重复设置样式的情况. 内部样式与外部样式 内部样式与外部样式优先级相同,如果都设置了相同样式,后引入的优先级高. 单一样式优先级 style行间> id>

CSS学习摘要-盒子模型

注:全文摘要自网络开发者网站,当然间隔也会整理一些思路和格式排版添加进去. CSS框模型(译者注:也被称为"盒模型")是网页布局的基础 --每个元素被表示为一个矩形的方框,框的内容.内边距.边界和外边距像洋葱的膜那样,一层包着一层构建起来.浏览器渲染网页布局时,它会算出每个框的内容要用什么样式,周围的洋葱层有多大,以及框相对于其它框放在哪里.在理解如何创建 CSS 布局之前,你需要理解框模型. 框属性 文档的每个元素被构造成文档布局内的一个矩形框,框每层的大小都可以使用一些特定的CSS