JS让任意图片垂直水平居中且页面不滚动

说一下以前遇到的一个问题:

假设有一张小图,要实现点击查看大图的功能,而这个图的宽高可能会超过浏览器的宽高,这时候我们通过JS来改变图片的宽高,从而实现图片在浏览器居中显示且不滚屏。

方法如下:

首先你要给小图添加一个点击事件,不多赘述。

showBigImg(e) {    let w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;    let h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;    if (e.target.naturalHeight && e.target.naturalWidth) {        const naturalHeight = e.target.naturalHeight;        const naturalWidth = e.target.naturalWidth;        const rh = h - naturalHeight;//浏览器视图宽度-图片宽度=rh        const rw = w - naturalWidth;//浏览器视图高度-图片高度=rw        if (rh >= 0 & rw >= 0) {//图片宽高未超出浏览器视图宽高            cimg.style.height = "auto";            cimg.style.width = "auto";            cimg.style.top = rh / 2 + "px";            cimg.style.left = rw / 2 + "px";        } else if (rh >= 0 & rw < 0) {//图片宽度超出浏览器视图宽度,且高度未超出浏览器视图高度,将图片的宽度改变为浏览器视图宽度,图片的宽度等比例缩小            cimg.style.width = w + "px";            cimg.style.height = "auto";            cimg.style.left = 0;            let newrh = h - cimg.offsetHeight;//浏览器视图宽度-改变后图片高度=newrh            cimg.style.top = newrh / 2 + "px";        } else if (rh < 0 & rw >= 0) {//图片高度超出浏览器视图高度,且宽度未超出浏览器视图宽度,将图片的高度改变为浏览器视图高度,图片的宽度等比例缩小            cimg.style.height = h + "px";            cimg.style.width = "auto";            let newrw = w - cimg.offsetWidth;//浏览器视图宽度-改变后图片宽度=newrw            cimg.style.left = newrw / 2 + "px";            cimg.style.top = 0;        } else {//图片宽高均超出浏览器视图宽高,将图片宽高改变为浏览器视图宽高            cimg.style.width = w + "px";            cimg.style.height = h + "px";            cimg.style.left = 0;            cimg.style.top = 0;        }    }}
时间: 2024-09-29 18:34:03

JS让任意图片垂直水平居中且页面不滚动的相关文章

js实现未知宽高的元素在指定元素中垂直水平居中

js实现未知宽高的元素在指定元素中垂直水平居中:本章节介绍一下如何实现未知宽高的元素在指定元素下实现垂直水平居中效果,下面就以span元素为例子,介绍一下如何实现span元素在div中实现水平垂直居中效果,代码如下: <!DOCTYPE html><html><head><meta charset=" utf-8"><meta name="author" content="http://www.soft

div+css实现未知宽高元素垂直水平居中

div+css实现未知宽高元素垂直水平居中.很多同学在面试的时候都会遇到这样的问题:怎么用div+css的方法实现一个未知宽高的弹出框垂直水平居中??如果用JS的话就好办了,但是JS的使用会对页面性能造成影响,而且能用CSS实现的干嘛用JS呢,嘿嘿 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>div+css实现未

jQuery实现的div垂直水平居中实例代码

jQuery实现的div垂直水平居中实例代码:在窗口中有一个div元素,下面就介绍一下如何使用jQuery将其设置为水平垂直居中对齐,希望能够给需要的朋友带来一定的帮助.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/&quo

尺寸自适应的元素垂直水平居中

尺寸自适应的元素垂直水平居中: 如果子元素的尺寸是固定的,那么将其设置为垂直水平居中将会是比较容易的事情,这里就不做介绍了,具体可以参阅css实现div水平垂直居中代码一章节. 如果子元素的尺寸不是固定的,那么将其设置为垂直居中就有点麻烦了,下面看一段代码实例: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" co

垂直水平居中的几种方法

1,(元素在容器中垂直水平居中) css: .box{width:800px;height:800px;background:#ccc;display:flex;justify-content:center;align-items:center;} .box div{width:300px;height:300px;background:red;} html:  <div class="box"> <div></div> </div> 2

transform的妙用---实现div不定宽高垂直水平居中

transform的兼容性 transform的兼容性还是比较乐观的.IE9以下不兼容,IE9支持代替的-ms-transform属性不过只支持2D转换. 谷歌和Safari支持代替的-webkit-transform属性.IE9以上.火狐和欧朋是兼容的. transform 属性向元素应用 2D 或 3D 转换.该属性允许我们对元素进行旋转.缩放.移动或倾斜. 在此,可妙用其移动的属性. 遇见div不定宽和高垂直水平居中的问题.记得以前都是用js去实现.现在可以用 transform进行实现.

在各浏览器和各分辨率下如何让div内的table垂直水平居中?

本文主要针对需要全屏显示的系统页面内,因为系统经常会用到表格table布局,偶尔的table需要显示在div的正中间,所以鄙人特此总结下div内table的万千姿态. <!DOCTYPE html><html> <head><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" /> <title>i冰冰的个人博客</title> &

js数据显示在文本框中(页面加载显示和按钮触动显示)

web代码如下: <!DOCTYPE html> <html> <head> <title>jsTest02.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is

CSS垂直水平居中方法总结

在布局的时候经常能用到居中,在此总结一下 html结构: <div class="wrap"> <div class="content"></div> </div> 1.水平居中:margin:auto; .wrap{ width: 400px; height: 400px; background-color: lightblue; } .content{ width: 200px; height: 200px; ba