美文网首页
css学习 第三天

css学习 第三天

作者: 罗_c857 | 来源:发表于2019-10-28 10:36 被阅读0次

    CSS 分组 和 嵌套 选择器

    分组选择器

    在样式表中有很多具有相同样式的元素。

    h1{    color:green;}h2{    color:green;}p{    color:green;}

    为了尽量减少代码,你可以使用分组选择器。每个选择器用逗号分隔。

    在下面的例子中,我们对以上代码使用分组选择器:

    h1,h2,p{    color:green;}

    嵌套选择器

    它可能适用于选择器内部的选择器的样式。

    在下面的例子设置了三个样式:

            p{ }: 为所有 p 元素指定一个样式。

            .marked{ }: 为所有 class="marked" 的元素指定一个样式。

            .marked p{ }: 为所有 class="marked" 元素内的 p 元素指定一个样式。

            p.marked{ }: 为所有 class="marked" 的 p 元素指定一个样式。

    p{ color:blue;text-align:center;}

    .marked{    background-color:red;}

    .marked p{    color:white;}

    p.marked{    text-decoration:underline;}

    CSS 尺寸 (Dimension)

    所有CSS 尺寸 (Dimension)属性

    height                    设置元素的高度。

    line-height            设置行高。

    max-height            设置元素的最大高度。

    max-width            设置元素的最大宽度。

    min-height            设置元素的最小高度。

    min-width                设置元素的最小宽度。

    width                        设置元素的宽度。

    CSS Display(显示) 与 Visibility(可见性)

    display属性设置一个元素应如何显示,visibility属性指定一个元素应可见还是隐藏。

    隐藏元素 - display:none或visibility:hidden

    隐藏一个元素可以通过把display属性设置为"none",或把visibility属性设置为"hidden"。但是请注意,这两种方法会产生不同的结果。

    visibility:hidden可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。

    h1.hidden {visibility:hidden;}

    display:none可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。

    h1.hidden {display:none;}

    CSS Display - 块和内联元素

    块元素是一个元素,占用了全部宽度,在前后都是换行符。

    块元素的例子:

    <h1>

    <p>

    <div>

    内联元素只需要必要的宽度,不强制换行。

    内联元素的例子:

    <span>

    <a>

    如何改变一个元素显示

    可以更改内联元素和块元素,反之亦然,可以使页面看起来是以一种特定的方式组合,并仍然遵循web标准。

    下面的示例把列表项显示为内联元素:

    li {display:inline;}

    下面的示例把span元素作为块元素:

    span {display:block;}

    注意:变更元素的显示类型看该元素是如何显示,它是什么样的元素。例如:一个内联元素设置为display:block是不允许有它内部的嵌套块元素。

    CSS Position(定位)

    position 属性指定了元素的定位类型。

    position 属性的五个值:

    static

    relative

    fixed

    absolute

    sticky

    元素可以使用的顶部,底部,左侧和右侧属性定位。然而,这些属性无法工作,除非是先设定position属性。他们也有不同的工作方式,这取决于定位方法。

    static 定位

    HTML 元素的默认值,即没有定位,遵循正常的文档流对象。

    静态定位的元素不会受到 top, bottom, left, right影响。

    div.static { position: static;

        border: 3px solid #73AD21;}

    fixed 定位

    元素的位置相对于浏览器窗口是固定位置。

    即使窗口是滚动的它也不会移动:

    p.pos_fixed{ position:fixed;

        top:30px;

        right:5px;}

    注意: Fixed 定位在 IE7 和 IE8 下需要描述 !DOCTYPE 才能支持。

    Fixed定位使元素的位置与文档流无关,因此不占据空间。

    Fixed定位的元素和其他元素重叠。

    relative 定位

    相对定位元素的定位是相对其正常位置。

    h2.pos_left{ position:relative;

        left:-20px;}

    h2.pos_right{    position:relative;

        left:20px;}

    absolute 定位

    绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>:

    h2{ position:absolute;

        left:100px;

        top:150px;}

    sticky 定位

    sticky 英文字面意思是粘,粘贴,所以可以把它称之为粘性定位。

    position: sticky; 基于用户的滚动位置来定位。

    粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。

    它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。

    元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。

    这个特定阈值指的是 top, right, bottom 或 left 之一,换言之,指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。

    注意: Internet Explorer, Edge 15 及更早 IE 版本不支持 sticky 定位。 Safari 需要使用 -webkit- prefix (查看以下实例)。

    div.sticky { position: -webkit-sticky; /* Safari */ position: sticky;

        top: 0;

        background-color: green;

        border: 2px solid #4CAF50;}

    重叠的元素

    元素的定位与文档流无关,所以它们可以覆盖页面上的其它元素

    z-index属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面)

    一个元素可以有正数或负数的堆叠顺序:

    img{ position:absolute;

        left:0px;

        top:0px;

        z-index:-1;}

    CSS 布局 - Overflow

    CSS overflow 属性用于控制内容溢出元素框时显示的方式。

    CSS Overflow

    CSS overflow 属性可以控制内容溢出元素框时在对应的元素区间内添加滚动条。

    overflow属性有以下值:

    visible            默认值。内容不会被修剪,会呈现在元素框之外。

    hidden            内容会被修剪,并且其余内容是不可见的。

    scroll                内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。

    auto                    如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。

    inherit                规定应该从父元素继承 overflow 属性的值。

    overflow: visible

    默认情况下,overflow 的值为 visible, 意思是内容溢出元素框:

    div { width: 200px;

        height: 50px;

        background-color: #eee;

        overflow: visible;}

    CSS Float(浮动)

    什么是 CSS Float(浮动)?

    CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。

    Float(浮动),往往是用于图像,但它在布局时一样非常有用。

    元素怎样浮动

    元素的水平方向浮动,意味着元素只能左右移动而不能上下移动。

    一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。

    浮动元素之后的元素将围绕它。

    浮动元素之前的元素将不会受到影响。

    如果图像是右浮动,下面的文本流将环绕在它左边:

    img{ float:right;}

    彼此相邻的浮动元素

    如果你把几个浮动的元素放到一起,如果有空间的话,它们将彼此相邻。

    在这里,我们对图片廊使用 float 属性

    .thumbnail { float:left;

        width:110px;

        height:90px;

        margin:5px;}

    清除浮动 - 使用 clear

    元素浮动之后,周围的元素会重新排列,为了避免这种情况,使用 clear 属性。

    clear 属性指定元素两侧不能出现浮动元素。

    使用 clear 属性往文本中添加图片廊:

    .text_line{ clear:both;}

    CSS 布局 - 水平 & 垂直对齐

    元素居中对齐

    要水平居中对齐一个元素(如

    ), 可以使用 margin: auto;。

    设置到元素的宽度将防止它溢出到容器的边缘。

    元素通过指定宽度,并将两边的空外边距平均分配:

    .center { margin: auto;

        width: 50%;

        border: 3px solid green;

        padding: 10px;}

    注意: 如果没有设置 width 属性(或者设置 100%),居中对齐将不起作用。

    文本居中对齐

    如果仅仅是为了文本在元素内居中对齐,可以使用 text-align: center;

    .center { text-align: center;

        border: 3px solid green;}

    图片居中对齐

    要让图片居中对齐, 可以使用 margin: auto; 并将它放到  元素中:

    img { display: block;

        margin: auto;

        width: 40%;}

    左右对齐 - 使用定位方式

    我们可以使用 position: absolute; 属性来对齐元素:

    .right { position: absolute;

        right: 0px;

        width: 300px;

        border: 3px solid #73AD21;

        padding: 10px;}

    注释:绝对定位元素会被从正常流中删除,并且能够交叠元素。

    提示: 当使用 position 来对齐元素时, 通常 <body> 元素会设置 margin 和 padding 。 这样可以避免在不同的浏览器中出现可见的差异。

    当使用 position 属性时,IE8 以及更早的版本存在一个问题。如果容器元素(在我们的案例中是 <div class="container">)设置了指定的宽度,并且省略了 !DOCTYPE 声明,那么 IE8 以及更早的版本会在右侧增加 17px 的外边距。这似乎是为滚动条预留的空间。当使用 position 属性时,请始终设置 !DOCTYPE 声明:

    左右对齐 - 使用 float 方式

    我们也可以使用 float 属性来对齐元素:

    .right { float: right;

        width: 300px;

        border: 3px solid #73AD21;

        padding: 10px;}

    当像这样对齐元素时,对 <body> 元素的外边距和内边距进行预定义是一个好主意。这样可以避免在不同的浏览器中出现可见的差异。

    注意:如果子元素的高度大于父元素,且子元素设置了浮动,那么子元素将溢出,这时候你可以使用 "clearfix(清除浮动)" 来解决该问题。

    我们可以在父元素上添加 overflow: auto; 来解决子元素溢出的问题:

    .clearfix { overflow: auto;}

    当使用 float 属性时,IE8 以及更早的版本存在一个问题。如果省略 !DOCTYPE 声明,那么 IE8 以及更早的版本会在右侧增加 17px 的外边距。这似乎是为滚动条预留的空间。当使用 float 属性时,请始终设置 !DOCTYPE 声明:

    body { margin: 0;

        padding: 0;} 

    .right {    float: right;

        width: 300px;

        background-color: #b0e0e6;}

    垂直居中对齐 - 使用 padding

    CSS 中有很多方式可以实现垂直居中对齐。 一个简单的方式就是头部顶部使用 padding:

    .center { padding: 70px 0;

        border: 3px solid green;}

    如果要水平和垂直都居中,可以使用 padding 和 text-align: center:

    .center { padding: 70px 0;

        border: 3px solid green;

        text-align: center;}

    垂直居中 - 使用 line-height

    .center { line-height: 200px;

        height: 200px;

        border: 3px solid green;

        text-align: center;}

    /* 如果文本有多行,添加以下代码: */

    .center p {    line-height: 1.5;

        display: inline-block;

        vertical-align: middle;}

    垂直居中 - 使用 position 和 transform

    除了使用 padding 和 line-height 属性外,我们还可以使用 transform 属性来设置垂直居中:

    .center {

        height: 200px;

        position: relative;

        border: 3px solid green; } 

    .center p {    margin: 0;

        position: absolute;

        top: 50%;

        left: 50%;

        transform: translate(-50%, -50%);}

    相关文章

      网友评论

          本文标题:css学习 第三天

          本文链接:https://www.haomeiwen.com/subject/lzuvvctx.html