div下图片自适应解决方法

解决|自适应

我们(特别是像我一样的菜鸟)经常会遇到一个问题——图片自适应。这个问题是很普遍的。在文章区,在论坛,可以这么说:哪儿需要上传图片,哪儿就存在这个问题,而论坛上也不时有人询问。为什么?原因很简单,我们不能要求网页编辑或者你的论坛会员都会裁剪图片或者了解最基本的html代码——尽管这并没有多少技术含量。

以前的解决方法主要是利用js来实现,但用过的人都知道该办法有点繁琐。还有一种是在外部容器定义over-flow:hidden。但这种办法只会切割图片而不会自动适用。
下面的办法的出现应该感谢伟大的css2.0和更伟大的microsoft(没有它就不必有这么啰嗦的代码了^_^)。本人仅在ie6.0,ff1.5,opera7.0于winXP下测试通过,希望通过此篇文章抛砖引玉,望更多高手指点。关键在于:max-width:780px;以及下面那行。

固定像素适应:

运行代码框

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>css2.0 VS ie</title><style type="text/css"><!--body { font-size: 12px; text-align: center; margin: 0px; padding: 0px;}#pic{ margin:0 auto; width:800px; padding:0; border:1px solid #333; }#pic img{ max-width:780px; width:expression(document.body.clientWidth > 780? "780px": "auto" ); border:1px dashed #000; }--></style></head><body><div id="pic"><img src="/UploadPic/2007-7/20077721233741.jpg" alt="感谢blueidea被我盗链图片!"/></div></body></html>

    [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

百分比适应:

运行代码框

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>css2.0 VS ie</title><style type="text/css"><!--body { font-size: 12px; text-align: center; margin: 0; padding: 0;}#pic{ margin:0 auto; width:90%; padding:0; border:1px solid #333; }#pic img{ max-width:80%; width:expression(document.body.clientWidth>document.getElementById("pic").scrollWidth*8/10? "80%": "auto" ); border:1px dashed #000; }--></style></head><body><div id="pic"><img src="/UploadPic/2007-7/20077721233741.jpg" alt="感谢blueidea被我盗链图片!"/></div></body></html>

    [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

提醒:

1 该方法不只是用于img;
2 max-width,max-height,min-width,min-height.

CSS中expression使用简介
作者:dozb

定义

IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和Javascript表达式关联起来,这里的CSS属性可以是元素固有的属性,也可以是自定义属性。就是说CSS属性后面可以是一段Javascript表达式,CSS属性的值等于Javascript表达式计算的结果。 在表达式中可以直接引用元素自身的属性和方法,也可以使用其他浏览器对象。这个表达式就好像是在这个元素的一个成员函数中一样。

给元素固有属性赋值

例如,你可以依照浏览器的大小来安置一个元素的位置。

#myDiv {
position: absolute;
width: 100px;
height: 100px;
left: expression(document.body.offsetWidth - 110 + "px");
top: expression(document.body.offsetHeight - 110 + "px");
background: red;
}

给元素自定义属性赋值

例如,消除页面上的链接虚线框。

通常的做法是:

<a href="link1.htm" >link1</a>
<a href="link2.htm" >link2</a>
<a href="link3.htm" >link3</a>

粗看或许还体现不出采用expression的优势,但如果你的页面上有几十甚至上百个链接,这时的你难道还会机械式地Ctrl+C,Ctrl+V么,何况两者一比较,哪个产生的冗余代码更多呢?

采用expression的做法如下:  

<style type="text/css">
a {star : expression(onfocus=this.blur)}
</style>
<a href="link1.htm">link1</a>
<a href="link2.htm">link2</a>
<a href="link3.htm">link3</a>

说明:

里面的star就是自己任意定义的属性,你可以随自己喜好另外定义,接着包含在expression()里的语句就是JS脚本,在自定义属性与expression之间可别忘了还有一个引号,因为实质还是CSS,所以放在style标签内,而非script内。OK,这样就很容易地用一句话实现了页面中的链接虚线框的消除。不过你先别得意,如果触发的特效是CSS的属性变化,那么出来的结果会跟你的本意有差别。例如你想随鼠标的移进移出而改变页面中的文本框颜色更改,你可能想当然的会认为应该写为
/* 原文有乱码,没时间修正,抱歉!*/
可结果却是出现脚本出错,正确的写法应该把CSS样式的定义写进函数内,如下所示:

<style type="text/css">
input {star : expression(onmouseover=function()
{this.style.backgroundColor="#FF0000"},
onmouseout=function(){this.style.backgroundColor="#FFFFFF"}) }
</style>
<input type="text">
<input type="text">
<input type="text">

注意:

不是非常需要,一般不建议使用expression,因为expression对浏览器资源要求比较高

时间: 2024-10-28 17:48:46

div下图片自适应解决方法的相关文章

学习CSS技巧:DIV下图片自适应解决方法

css|技巧|解决|自适应 我们(特别是像我一样的菜鸟)经常会遇到一个问题--图片自适应.这个问题是很普遍的.在文章区,在论坛,可以这么说:哪儿需要上传图片,哪儿就存在这个问题,而论坛上也不时有人询问.为什么?原因很简单,我们不能要求网页编辑或者你的论坛会员都会裁剪图片或者了解最基本的html代码--尽管这并没有多少技术含量. 以前的解决方法主要是利用js来实现,但用过的人都知道该办法有点繁琐.还有一种是在外部容器定义over-flow:hidden.但这种办法只会切割图片而不会自动适用.下面的

Win7系统Chrome浏览器无法显示网页图片的解决方法

Win7系统打开Chrome浏览器浏览网页发现页面无法显示图片,出现这种情况该如何解决?下面小编为大家带来Win7系统Chrome浏览器无法显示网页图片的解决方法.一起去看看吧! 方法一: 1.清理缓存1.启动Chrome浏览器,然后单击浏览器右上角按钮,选择"工具"-"清除浏览数据": 2.在弹出的窗口中将"清除指定时间内的数据"选择"全部"并将下方的"清空缓存"勾选上,最后单击底部的"清除浏览

asp.net实现访问局域网共享目录下文件的解决方法_实用技巧

本文以实例讲述了asp.net实现访问局域网共享目录下文件的解决方法,完整代码如下所示: using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls;

div嵌套 img 空白解决方法

图片都用div包含的但是有出现空白的现象,想必有很多的朋友遇到过吧,解决方法很简单为图片加上display:block属性便可解决 如果上下两个图片都用div包含的,但是有空白出现 解决方法: 给img标签添加属性,display:block; 这样,问题就解决了

IE10不显示图片的解决方法

  最近小编发现IE10不显示图片,尤其在淘宝网上,如下图,用别的浏览器可以正常显示.引起这类问题的原因很多,下面说说解决方法. IE 10 不显示图片 问题一.可以看到大部分图片,但无法看到所有图片 如果只有个别图片或页面存在这种问题,应当能够在该站点或其他站点上查看部分图片. 可以尝试采取以下几种措施: 在桌面上打开该页面,右键单击(或长按)应当显示图片的空白空间. 然后,在下拉菜单中点击或单击"显示图片". 如果这不起作用,则该图片的链接可能损坏,站点所有者必须修复这个问题. 在

flash遮住div问题的正确解决方法

 在项目中遇到了一个困惑好久的问题,flash遮住div的问题,今天终于解决了 ,需要的朋友可以参考下 在项目中遇到了一个困惑好久的问题,今天终于解决了.其实解决方法很简单.    直接上代码:  代码如下: <script type="text/javascript" src="swfobject.js"></script>  <script type="text/javascript">  // For v

纯js实现div内图片自适应大小(已测试,兼容火狐)_javascript技巧

这代码实现的功能就是平常我们遇到的一个div里面包含img的时候,在img图片大小未知,div大小未知的情况下,让图片自适应大小,对于图片本身小于div容器大小时,不作处理.因为如果拉伸,图片可能就失真了. 废话不多说,直接上代码,已测试,兼容火狐,谷歌,IE6,IE7/8 以下是js代码: 复制代码 代码如下: <script type="text/javascript" language="javascript"> window.onload=fun

firefox和谷歌不显示body背景图片的解决方法

样式如下只有IE可以显示背景图片,火狐和谷歌等浏览器都显示不了,解决方法如下,感兴趣的朋友可以参考下哈,希望对大家有所帮助     复制代码 代码如下: body { background:#F5F5F5 url(../images/a_55.jpg) no-repeat bottom left; margin:0; padding:0; font-family:"微软雅黑", "宋体", Arial, Verdana, sans-serif; font-size:

jquery validate在ie8下的bug解决方法_jquery

项目用到了jquery的表单校验插件validate,之前一直都只是做很简单的校验,没有做过稍微复杂的应用,近期项目对应用的要求提高了,一个页面中有两个提交按钮,然后表单校验是绑定在按钮的点击事件上的,如下.  然后很自然的就用到了插件的valid()函数:  这个确实能达到相要的效果,但是在ie8下竟然有问题,valid()方法始终返回false,而且所有的字段都会被当成必填字段校验,纠结了好久,因为jquery的插件代码都很复杂,所以刚开始看特别费劲,后来一步一步排查,找到问题了,问题出在a