首页 > 其他分享 >JS历理 点击图片在弹出层显示大图

JS历理 点击图片在弹出层显示大图

时间:2024-05-22 16:51:36浏览次数:21  
标签:src imgWidth 缩放 大图 出层 JS 宽度 var 图片

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>后台首页 - ICbA后台模板 - 普通版演示</title>
<meta name="keywords" content="ICbA,ICbA模板,后台模板,ICbA后台模板">
<meta name="description" content="ICbA是一个轻量级后台模板,基于layui框架开发,简洁而不简单">
<link rel="stylesheet" href="./_/_pc/_js/layui/css/layui.css">
<link rel="stylesheet" href="./_/_pc/_css/base.css">
<script src="./_/_pc/_js/layui/layui.js"></script>
<script src="_/_pc/_js/jquery-1.10.1.min.js"></script>
<style>
ul li{ float:left; padding:5px;}
</style>
</head>
<body>
<div id="outerdiv" style="position:fixed;top:0;left:0;background:rgba(0,0,0,0.7);z-index:2;width:100%;height:100%;display:none;">
	<div id="innerdiv" style="position:absolute;">
		<img id="bigimg" style="border:5px solid #fff;" src="" />
	</div>
</div>
		
<ul id="imglist">
	<li><img class="pimg"  src="_/_pc/_img/wx.jpg" width="100px" /></li>
    <li><img class="pimg"  src="_/_pc/_img/wx.jpg" width="100px" /></li>
    <li><img class="pimg"  src="_/_pc/_img/wx.jpg" width="100px" /></li>
    <li><img class="pimg"  src="_/_pc/_img/wx.jpg" width="100px" /></li>
    <li><img class="pimg"  src="_/_pc/_img/wx.jpg" width="100px" /></li>
    <li><img class="pimg"  src="_/_pc/_img/wx.jpg" width="100px" /></li>
</ul>

<script>
	$(function(){
		$(".pimg").click(function(){
			var _this = $(this);//将当前的pimg元素作为_this传入函数
			imgShow("#outerdiv", "#innerdiv", "#bigimg", _this);
		});
	});


function imgShow(outerdiv, innerdiv, bigimg, _this){
	var src = _this.attr("src");//获取当前点击的pimg元素中的src属性
	$(bigimg).attr("src", src);//设置#bigimg元素的src属性
 
        /*获取当前点击图片的真实大小,并显示弹出层及大图*/
	$("<img/>").attr("src", src).load(function(){
		var windowW = $(window).width();//获取当前窗口宽度
		var windowH = $(window).height();//获取当前窗口高度
		var realWidth = this.width;//获取图片真实宽度
		var realHeight = this.height;//获取图片真实高度
		var imgWidth, imgHeight;
		var scale = 0.8;//缩放尺寸,当图片真实宽度和高度大于窗口宽度和高度时进行缩放
		
		if(realHeight>windowH*scale) {//判断图片高度
			imgHeight = windowH*scale;//如大于窗口高度,图片高度进行缩放
			imgWidth = imgHeight/realHeight*realWidth;//等比例缩放宽度
			if(imgWidth>windowW*scale) {//如宽度扔大于窗口宽度
				imgWidth = windowW*scale;//再对宽度进行缩放
			}
		} else if(realWidth>windowW*scale) {//如图片高度合适,判断图片宽度
			imgWidth = windowW*scale;//如大于窗口宽度,图片宽度进行缩放
                        imgHeight = imgWidth/realWidth*realHeight;//等比例缩放高度
		} else {//如果图片真实高度和宽度都符合要求,高宽不变
			imgWidth = realWidth;
			imgHeight = realHeight;
		}
                $(bigimg).css("width",imgWidth);//以最终的宽度对图片缩放
		
		var w = (windowW-imgWidth)/2;//计算图片与窗口左边距
		var h = (windowH-imgHeight)/2;//计算图片与窗口上边距
		$(innerdiv).css({"top":h, "left":w});//设置#innerdiv的top和left属性
		$(outerdiv).fadeIn("fast");//淡入显示#outerdiv及.pimg
	});
	
	$(outerdiv).click(function(){//再次点击淡出消失弹出层
		$(this).fadeOut("fast");
	});
}
</script>

</body>
</html>

效果图:

标签:src,imgWidth,缩放,大图,出层,JS,宽度,var,图片
From: https://www.cnblogs.com/onestopweb/p/18206647

相关文章

  • JS历理 Markdown在线编辑器editor
    官网下载下载地址:http://editor.md.ipandao.comJS引入新建文件夹md,将下载好的文件引入过来,新建方法视图文件<!DOCTYPEhtml><html><head> <metacharset="utf-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <ti......
  • Golang初学:vs code, launch.json, Run
    goversiongo1.22.1windows/amd64Windows11+amd64x86_64x86_64GNU/Linuxvscode1.89.1--- 序章在vscode开发go程序,之前总是在终端(terminal)输入命令(gorun.)来执行。不过,这不是最高效的方式。通过添加并配置launch.json可以更方便地程序仅运行(Ctrl+F5......
  • thinkphp5遇到必须使用Db::raw方法而无法使用json格式传递Db对象
    今天使用Thinkphp5做异步任务传递where参数时遇到一个问题:有一段如下代码:$where['jst.supplier']=['exp',Db::raw('>0orjst.is_supplier=1')];在使用swoole做异步任务时需要把where参数传递给异步任务处理,因为无法传递数组和对象只能传递字符串,所以需要把where数组转换......
  • 使用-Danfo-js-构建数据驱动应用-全-
    使用Danfo.js构建数据驱动应用(全)原文:zh.annas-archive.org/md5/074CFA285BE35C0386726A8DBACE1A4F译者:飞龙协议:CCBY-NC-SA4.0前言大多数数据分析师使用Python和pandas进行数据处理和操作,这得益于这些库提供的便利性和性能。然而,JavaScript开发人员一直希望浏览器......
  • JavaScript-和-JSON-基础知识-全-
    JavaScript和JSON基础知识(全)原文:zh.annas-archive.org/md5/256179285D6D80D91E6E7DA046AC4F3E译者:飞龙协议:CCBY-NC-SA4.0前言《JavaScript和JSON基础》是一个一站式资源,可用于理解和实现各种Web应用中的JSON。本书全面介绍了如何实现和集成JSON到您的应用程序......
  • 出识babylonjs
    babylon.js初识代码<template><divstyle="width:100%;height:100%;overflow:hidden;"class="_Main_"><divid="babylonJS"style="float:left;width:100%;height:100%;"><c......
  • Chart.js (v2.9.4)概要介绍
    chart.js是一个非常优秀的开源图表插件,扩展非常灵活,同时也提供了大量的钩子函数,给与用户添加自定义插件,实现个性化的需求。具体的优势特点,这里不详述,网上大把资料,现开始正式深入了解这个插件. Chart布局大概分为如下六个区域,这些是主要的,也有些特殊,比如左右两边都有Y轴,这个用......
  • nodejs中express搭建本地web服务器
    constexpress=require("express");constfs=require("fs");constpath=require("path");constapp=express();//读取当前目录中public文件中所有文件constdirectorPath=path.join(__dirname,"public");app.get("/&quo......
  • js纯前端实现语音播报,朗读功能
    实现语音播报要有两个原生API分别是【window.speechSynthesis】【SpeechSynthesisUtterance】项目代码//执行函数letvoices,timerVoicestimerVoices=setInterval(()=>{voices=window.speechSynthesis.getVoices()if(voices.length){clearInter......
  • tensorflow.js示例笔记 - predict-download-time
    预测下载时间。<!DOCTYPEhtml><html><head><title>predict-download-time</title><style>canvas{border:1pxsolid#d3d3d3;}</style><sc......