css和图片在网页开发中的应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css和图片在网页开发中的应用相关的知识,希望对你有一定的参考价值。

  现在我有个需求,要求开发一个简单的网页,网页内容只有标题和段落.但是要求标题用图片代替.

  我知道最菜的菜鸟会这么写

<img src="#" alt="标题写这" />
<p>段落</p>

  呵呵,然而img压根就不是标题,很显然,我们的标题还是要写出来的,于是有人会在img外部添加个h1.就像这样

<h1><img src ="#" alt="标题写在这儿" /><h1>

这两种做法都把alt当h1来使用,完全就背离了语义化的原则.

于是有人这么写

<h1><img src="" />我是标题</h1>

这家伙很聪明,知道不能加alt了,不然当图片显示不出来时,就会出现alt的文字和本来的h1标题文字交错.
然而,这也不怎么好的,因为w3c建议你img最好都带alt.

 

 那么,为今之计,我们是否可以考虑样式表呢?

<h1>我是标题</h1>
<p>我是段落</p>
h1 {
  background-image : url(images/xx.gif);
}

 我们用外部样式表,好处是当样式表还未被下载或丢失时,用户也能看到正常的h1标题.

 但是当用户一切正常时,会发现标题和图片叠在一起了.这时候可以用text-indent属性把文字移到外面去.

h1 {
  height : 43px;
  background-image : url(); 
  background-repeat : no-repeat;
  text-indent : -9999px;
}

 设置height的目的是为了h1能够完全显示图片.

  这样,我们的目的就达成了吗?

 可以说基于题目的要求我们达成了目的,但是假如图片下载慢呢,那么就会在标题处暂留一片空白.

为解决这个问题,可以在h1里加span,原因是span是行内元素不会无端占用额外空间.

把图片放在span里,把span撑大;因为h1是他的父元素,h1标题的内容会显示在图片下方;我们只要把图片做得和h1占用的空间一样大就行;

另外图片一定要不透明的!

关于这点读者可以按F12,选择3D视图模式,这样容易发挥层叠样式表的威力.主要css代码如下

h1 {
 position : relative;
width : 389px;
height : 43px; 
overflow : hidden;
font-size : 175%;       /*下面的三行都是为了区分有css没图片和没有css*/
line-height : 43px;
text-transform : uppercase;
}

h1 span {
  position : absolute;
  left : 0;
  top : 0;
  width: 100%;
  height :100%;
  background-image : url(images/title_snow.gif);
  background-repeat : no-repeat;
}

 

把绝对定位嵌入到相对定位 ,那么这个绝对定位的元素就是以这个相对定位的元素来布局.

一般的绝对定位是这样用的,父元素要是相对定位的且须有布局,如有个高度,这样子元素用绝对定位,就可以相对它的父元素进行绝对定位,父元素若不这样做,那么子元素用绝对定位其实是相对body定位。

具体代码见我的github:

https://github.com/xzqhext/art-of-css.git

 

总结: 

需求场景: 含图片的网页怎么写才能具有更好的性能.

解决方案: 1.没CSS情况下,用户可以看到未经任何修饰的网页;

             2.有CSS情况下,用户可以看到更丰富的网页;

             3.为防止图片失效,做两层准备;禁图的用户可以看到好看的文字版;有图的当然可以看到图;

 

以上是关于css和图片在网页开发中的应用的主要内容,如果未能解决你的问题,请参考以下文章

代码实现及网页知识

炫酷 CSS 背景效果的 10 个代码片段

网页编程软件都有哪些

网页设计中如何让图片轮播

web前端开发图片放大了不清晰

怎么使用CSS让图片水平垂直都居中?