纯CSS无表达式实现未知尺寸图片等比缩放(支持IE7及以上)

所属栏目:建站技术 更新时间:2020-10-30 点击: 文章来源:http://www.sznest.net/jzjs/3540.html

在制作网页的时候,常常会遇到一种情况,我们需要把一些未知尺寸的图片放在一个固定宽高的容器中,这时候我们需要考虑这样的问题:

只给图片设置宽度或高度的其中一项可以实现图片等比缩放,但图片可能超出容器大小。
给图片设置固定的宽高可能导致图片变形。

有些人可能会简单地用JavaScript解决:


代码如下:

<img src="image-url.png" onload="if(this.width > 100){this.width =  100;}if(this.height > 100){this.height = 100;}" />

但在这种写法在图片长宽差距较大时还是会出现图片变形的情况,优化了缩放算法的代码如下:


代码如下:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScript实现图片等比缩放</title>
</head>
<body>
<script type="text/javascript">
function resize(element, maxWidth, maxHeight){
if(element.width > maxWidth || element.height > maxHeight){
if(element.width / element.height > maxWidth / maxHeight){
element.width = maxWidth;
}else{
element.height = maxHeight;
}
}
}
</script>
<img src="image-url.png" onload="resize(this, 100, 100);" />
</body>
</html>

而在不考虑IE6的情况下,可以直接使用CSS来实现,而且不需要使用低性能的CSS表达式:


代码如下:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>纯CSS无表达式实现图片等比缩放</title>
<style>
.box{
width: 300px;
height: 300px;
text-align: center;
border: 1px solid #ccc;
}
.box img{
max-width: 100%;
max-height: 100%;
width: auto;
height: auto;
}
</style>
</head>
<body>
<div><img src="image-url.png" alt=""></div>
</body>
</html>
 

 

示例代码如下
<script type="text/javascript">
function resize(element, maxWidth, maxHeight){
if(element.width > maxWidth || element.height > maxHeight){
if(element.width / element.height > maxWidth / maxHeight){
element.width = maxWidth;
}else{
element.height = maxHeight;
}
}
}
</script>
<style type="text/css">
    border:1px #CCCCCC solid;
    width:130px;
    height:130px;
    text-align:center;
    display:table-cell;
    vertical-align:middle;
</style>
<div>
<a href="#"><img src="图片地址" onload="resize(this, 130, 130);"/></a>
</div>

相关阅读

帝国CMS-采集关键的经验总结

采集关键的几个步骤一:先建好栏目二:增加采集节点(需要选择栏目)三:录入节点名称四:如果有很多页,只需录入采集页面地址方式二中的内容地址为http://www.sznest.net/news.asp?big_class_id=3&amp;page=[page]页码从1到多少页之间、间隔倍数为1(这个多少页即被采集的网站的实际页数,注意这里修改后,在采集页面地…

了解详情 >>

AJAX随机调用数组中不重复的元素

读以记事本中的网址,记事本里中有多个网址,每个一行,然后使用AJAX循环请求随机出来的部分不重复的网址setsrmObj=server.CreateObject(&quot;adodb.stream&quot;)srmObj.type=1srmObj.mode=3srmObj.opensrmObj.Position=0srmObj.LoadFromFile(…

了解详情 >>

如何修改文件默认打开方式为指定的程序?

一:“开始菜单”,在里面点击右侧的“运行”选项,输入“regedit”命令,打开注册表修改默认的打开方式需要在注册表中操作,在完成这个操作之前,我们先了解一下注册表中的以下的三个概念项:即左侧的类似于文件夹一样的图标数值名称:即点击“项”之后出现在右侧部分的左边的那个名称数值数据:即点击“项”之后出现在右侧部分的右边的那个数据了解了以上的三个概念之后,接下来…

了解详情 >>

access数据库的表如何导出到excel表?

其实要使access数据库导出到excel中很简单,只需要打开数据库,选中你要导出的表,然后选择菜单下面的外部数据,再选择excel即可,要导出时有两点需要注意,第一,只能单张的一个表一个表的导出,不能导出数据库,第二,一定要确保安装了excel软件,否则在外部数据那里可能找不到excel这个选项其实要导出到excel表还可以有另外一个反过来的办法,就是新建…

了解详情 >>

小程序的下单与支付的业务流程

1:小程序携带商品信息调用第三方服务器的下单API2:第三方服务器下单API对小程序带来的商品作库存量检测3:如果检测通过,第三方服务器就会保存这个订单并且告之小程序下单成功4:小程序调用第三方服务器的支付api5:第三方服务器API调用微信的预订单API[WxPayApi::unifiedOrder](注意第三方服务器是无法完成支付的,这个订单实际是在微信…

了解详情 >>

怎么获取腾讯视频真实地址?

特别说明:1:腾讯视频的真实地址是http://IP地址开头的网址。2:腾讯视频的真实地址依赖于腾讯视频的原网页地址。3:腾讯视频的原网页地址仅限于以https://v.qq.com/x/page/开头的网址,以https://v.qq.com/x/cover/开头的网址,则是无法获取到真实地址的。要获取腾讯视频的真实地址有两个方法,第一种方法很简单,第二个…

了解详情 >>

Copyright @ 2008-2019   www.sznest.net   All rights reserved  网巢网是一家专业为企业提供免费建站、自助建站的模板建站公司     友情链接:香港张元洪律师行   

微信

移动端

客服

顶部