css学习 第三天

2019-10-28  本文已影响0人  罗_c857

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%);}

上一篇下一篇

猜你喜欢

热点阅读