欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CSS控制边框和背景

程序员文章站 2022-05-08 16:17:53
...

定义简单边框

border属性(简写属性)

元素的边框(border)是围绕元素内容和内边距的一条或多条线

CSS border属性允许我们规定元素边框的样式、宽度和颜色。

定义和用法

border简写属性在一个声明设置所有的边框属性。

可以按顺序设置如下属性:

• border-width

• border-style

• border-color


如果不设置其中的某个值,也不会出问题,比如border: solid #ff0000; 也是允许的。


可能的值

描述
border-width 规定边框的宽度。参阅:border-width 中可能的值。
border-style 规定边框的样式。参阅:border-style 中可能的值。
border-color 规定边框的颜色。参阅:border-color 中可能的值。
inherit 规定应该从父元素继承 border 属性的设置。

<!DOCTYPE html>
<html>
<head>
  <style type="text/css">
    .class1
    {
       border-width: 5px;
       border-color: blue;
       border-style: solid;  <!-- 不设置style的话,边框是没有任何效果的 -->
    }
  </style>
</head>

<body>
  <p class='class1'>CSS边框</a>
</body>
</html>

CSS控制边框和背景


边框定义多种样式

我们可以为边框定义多种样式:

<!DOCTYPE html>
<html>
<head>
  <style type="text/css">
    .class1
    {
       border-width: 5px;
       border-color: blue;
       border-style: solid dotted dashed double;  <!-- 此处定义了四种样式:实线上边框、点线右边框、虚线下边框和双线左边框。这里的值采用了top-right-bottom-left顺序 -->
    }
  </style>
</head>

<body>
  <p class='class1'>CSS边框</a>
</body>
</html>

CSS控制边框和背景


定义单边样式

如果我们希望为元素框的某一边设置边框样式,而不是设置所有4个边的样式。或者我们希望某些边的样式和其它边的样式不同,可以使用如下单边边框样式属性:

因此这两种方法是等价的:

p {border-style: solid solid solid none;}
p {border-style: solid; border-left-style: none;}

注意:要使用第二种方法,必须把单边属性放在简写属性之后。因为如果把单边属性放在border-style之前,简写属性的值就会覆盖单边值none


同理也有单边宽度和单边颜色:

同样,单边设置也可以简写为border-top等。

设置顺序依然是width style color


圆角边框

border-radius属性设置圆角边框

border-radius: 20px/15px

<!-- 此例表示一个椭圆的圆角效果,同时设定了四个圆角 -->
<!-- 圆心离边框左右边距离20px,距离上下边15px -->



定义简单背景

background属性(简写属性)

定义和用法

background简写属性在一个声明中设置所有的背景属性。

可以设置如下属性:

  • background-color
  • background-position
  • background-size
  • background-repeat
  • background-origin
  • background-clip
  • background-attachment
  • background-image

如果不设置其中的某个值,也不会出现问题,比如background: #ff0000 url('smile.gif'); 也是允许的。

通常建议使用background属性,而不是分别使用单个属性,因为这个属性在较老的浏览器中能够得到更好的支持,而且需要键入的字母更少。


背景色

可以使用background属性为元素设置背景色。这个属性接受任何合法的颜色值。

<html>
<head>

  <style type="text/css">

    body {background-color: yellow}
    h1 {background-color: #00ff00}  <!-- 这条规则把元素的背景设置为绿色 -->
    h2 {background-color: transparent}
    p {background-color: rgb(250,0,255)}

    p.no2 {background-color: gray; padding: 20px;}   <!-- 如果您希望背景色从元素中的文本向外少有延伸,只需增加一些内边距 -->

  </style>

</head>

<body>

  <h1>这是标题 1</h1>
  <h2>这是标题 2</h2>
  <p>这是段落</p>
  <p class="no2">这个段落设置了内边距。</p>

</body>
</html>

CSS控制边框和背景

可以为所有元素设置背景色,这包括body一直到em和a等行内元素。

background-color不能继承,其默认值是transparent。transparent是“透明”的意思。也就是说,如果一个元素没有指定背景色,那么背景就是透明的,这样其祖先元素的背景才能可见。


背景图像

要把图像放入背景,需要使用background-image属性。

background-image属性的默认值是none,表示背景上没有放置任何图像。

如果需要设置一个图像背景,必须为这个属性设置一个URL值:

<html>
<head>
  <style type="text/css">
    p.flower {background-image: url(http://www.w3school.com.cn/i/eg_bg_03.gif); padding: 20px;}
    p.small {width: 506px; height: 284px; background-image:url(http://a.hiphotos.baidu.com/image/h%3D300/sign=79bce699c5177f3e0f34fa0d40ce3bb9/4afbfbedab64034fd084b629a3c379310a551d57.jpg); }
    a.radio {background-image: url(http://www.w3school.com.cn/i/eg_bg_07.gif);  padding: 20px;}
  </style>

</head>

<body>
  <p class="flower">我是一个有花纹背景的段落。<a href="#" class="radio">我是一个有放射性背景的链接。</a></p>
  <p><b>注释:</b>为了清晰地显示出段落和链接的背景图像,我们为它们设置了少许内边距。</p><br /><br />
  <p class='small'>设置width和height使图片能显示完整</p>
</body>

</html>

CSS控制边框和背景



背景重复

如果需要在页面上对背景图像进行平铺,可以使用background-repeat属性。

属性值 repeat 导致图像在水平垂直方向上都平铺,就像以往背景图像的通常做法一样。repeat-x 和 repeat-y 分别导致图像只在水平或垂直方向上重复,no-repeat 则不允许图像在任何方向上平铺。

默认的,背景图像将从一个元素的左上角开始。

<html>
<head>
  <style type="text/css">
    .small {background-image:url(http://a.hiphotos.baidu.com/image/h%3D300/sign=79bce699c5177f3e0f34fa0d40ce3bb9/4afbfbedab64034fd084b629a3c379310a551d57.jpg); }
  </style>

</head>

<body class='small'>

</body>

</html>
CSS控制边框和背景


如果只想让图片一次都不重复,要设置no-repeat属性值

<html>
<head>
  <style type="text/css">
    .small {background-image: url(http://a.hiphotos.baidu.com/image/h%3D300/sign=79bce699c5177f3e0f34fa0d40ce3bb9/4afbfbedab64034fd084b629a3c379310a551d57.jpg); 
            background-repeat: no-repeat;
    }
  </style>

</head>

<body class='small'>

</body>

</html>

CSS控制边框和背景


背景定位

可以利用background-position属性改变图像在背景中的位置。

<!-- 在 body 元素中将一个背景图像居中放置 -->
body
  { 
    background-image:url('/i/eg_bg_03.gif');
    background-repeat:no-repeat;
    background-position:center;
  }

为 background-position 属性提供值有很多方法。首先,可以使用一些关键字:top、bottom、left、right 和 center。通常,这些关键字会成对出现,不过也不总是这样。还可以使用长度值,如 100px 或 5cm,最后也可以使用百分数值。不同类型的值对于背景图像的放置稍有差异。


关键字

图像放置关键字最容易理解,其作用如其名称所表明的。例如,top right 使图像放置在元素内边距区的右上角。

根据规范,位置关键字可以按任何顺序出现,只要保证不超过两个关键字 - 一个对应水平方向,另一个对应垂直方向。

如果只出现一个关键字,则认为另一个关键字是 center。

所以,如果希望每个段落的中部上方出现一个图像,只需声明如下:

p
  { 
    background-image:url('bgimg.gif');
    background-repeat:no-repeat;
    
background-position:top;

  }

下面是等价的位置关键字:

单一关键字 等价的关键字
center center center
top top center 或 center top
bottom bottom center 或 center bottom
right right center 或 center right
left

left center 或 center left


百分数值

百分数值的表现方式更为复杂。假设你希望用百分数值将图像在其元素中居中,这很容易:

body
  { 
    background-image:url('/i/eg_bg_03.gif');
    background-repeat:no-repeat;
    
background-position:50% 50%;

  }

这会导致图像适当放置,其中心与其元素的中心对齐。换句话说,百分数值同时应用于元素和图像。也就是说,图像中描述为 50% 50% 的点(中心点)与元素中描述为 50% 50% 的点(中心点)对齐。

如果图像位于 0% 0%,其左上角将放在元素内边距区的左上角。如果图像位置是 100% 100%,会使图像的右下角放在右边距的右下角。

因此,如果你想把一个图像放在水平方向 2/3、垂直方向 1/3 处,可以这样声明:

body
  { 
    background-image:url('/i/eg_bg_03.gif');
    background-repeat:no-repeat;
    
background-position:66% 33%;

  }

如果只提供一个百分数值,所提供的这个值将用作水平值,垂直值将假设为 50%。这一点与关键字类似。

background-position 的默认值是 0% 0%,在功能上相当于 top left。这就解释了背景图像为什么总是从元素内边距区的左上角开始平铺,除非您设置了不同的位置值。


长度值

长度值解释的是元素内边距区左上角的偏移。偏移点是图像的左上角。

比如,如果设置值为 50px 100px,图像的左上角将在元素内边距区左上角向右 50 像素、向下 100 像素的位置上:

body
  { 
    background-image:url('/i/eg_bg_03.gif');
    background-repeat:no-repeat;
    
background-position:50px 100px;

  }

注意,这一点与百分数值不同,因为偏移只是从一个左上角到另一个左上角。也就是说,图像的左上角与 background-position 声明中的指定的点对齐。



背景关联

如果文档比较长,那么当文档向下滚动时,背景图像也会随之滚动。当文档滚动到超过图像的位置时,图像就会消失。

我们可以通过background-attachment属性放置这种滚动。通过这个属性,可以声明图像相对于可视区域是固定的(fixed),因此不会受到滚动的影响:

<!-- 图像始终存在于视野内 -->
body 
  {
  background-image:url(/i/eg_bg_02.gif);
  background-repeat:no-repeat;
  background-attachment:fixed
  }

background-attachment属性的默认值是scroll,也就是说,在默认的情况下,背景会随文档滚动。(图像会消失在视野内)