滑鼠移到圖片上有放大的效果

本文介绍了一种通过CSS样式实现图片缩放展示的方法。利用HTML与CSS特性,该方案能够使图片在鼠标悬停时放大显示,适用于网页设计中图片预览等功能。文章通过具体的代码示例展示了如何设置图片的原始尺寸及放大后的尺寸。
 
<style type="text/css">
<!--
#enlarge 
{
list-style-type
:none;
}
 
#enlarge li 
{
display
:block; 
float
:left; 
margin
:20px; 
width
:22px; height:18px; 
position
:relative;
}
 
#enlarge li a 
{
display
:block; 
width
:22px; height:18px; 
overflow
:hidden; 
position
:relative;
}
 
#enlarge li a img 
{
width
:100%; height:100%; 
border
:0;
}
 
#enlarge li a:hover 
{
position
:absolute; 
left
:-20px; 
top
:-20px; 
width
:80px; height:80px; 
}

-->
</style>
<ul id="enlarge"> 
<li><a href="#"><img src="01.gif" alt="image1" />Image1</a></li> 
<li><a href="#"><img src="02.gif" alt="image2" />Image2</a></li> 
<li><a href="#"><img src="03.gif" alt="image3" />Image3</a></li> 
</ul>


第10行和第15行 : 原始圖片的大小尺寸
第27行 : 放大圖片尺寸
using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class TouchScreen : MonoBehaviour { private Touch oldTouch1; //上次触摸点1(手指1) private Touch oldTouch2; //上次触摸点2(手指2) Touch newTouch1; Touch newTouch2; public Edit edit; public bool top = false; private Vector3 dragOffset; private bool isTouchDragging = false; // Start is called before the first frame update void Start() { } //public void OnPointerClick(PointerEventData eventData) //{ // Debug.Log("UI被点击: " + gameObject.name); // edit.SelectedObj = this.gameObject; // 处理点击事件 //} void OnMouseDown() { edit.can = true; GameObject topObject = GetTopmostClickedObject(); edit.SelectedObj = this.gameObject; } private GameObject GetTopmostClickedObject() { // 创建指针事件数据 PointerEventData eventData = new PointerEventData(EventSystem.current); eventData.position = Input.mousePosition; // 存储所有射线检测结果 List<RaycastResult> results = new List<RaycastResult>(); // 执行射线检测(包含UI和3D/2D物体) EventSystem.current.RaycastAll(eventData, results); // 如果没有命中任何物体,返回null if (results.Count == 0) return null; // 根据深度排序结果(深度值越小表示越靠前) results.Sort((a, b) => a.depth.CompareTo(b.depth)); // 调试输出所有命中的物体(可选) foreach (var result in results) { // Debug.Log("命中物体: " + result.gameObject.name + " | 深度: " + result.depth); } // 返回最上层物体(深度值最小的) return results[0].gameObject; } // Update is called once per frame void Update() { if (edit.can) { //没有触摸 if (Input.touchCount <= 0) { return; } //单点拖动 else if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved) { // var deltaposition = Input.GetTouch(0).deltaPosition; edit.SelectedObj.transform.Translate(new Vector3(deltaposition.x * 0.005f, deltaposition.y * 0.005f, 0f), Space.World); } //双指旋转 && 缩放 else if (2 <= Input.touchCount) { //Debug.Log("单点触摸, 水平上下旋转 "); Touch touch = Input.GetTouch(0); Vector2 deltaPos = touch.deltaPosition;//位置增量 if (Mathf.Abs(deltaPos.x) >= 3 || Mathf.Abs(deltaPos.y) >= 3) { edit.SelectedObj.transform.Rotate(Vector3.forward * deltaPos.x * Time.deltaTime*5, Space.World);//绕y轴旋转 //transform.Rotate(Vector3.right * deltaPos.y, Space.World);//绕x轴 } //缩放 newTouch1 = Input.GetTouch(0);// newTouch2 = Input.GetTouch(1); if (newTouch2.phase == TouchPhase.Began) { oldTouch2 = newTouch2; oldTouch1 = newTouch1; return; } float oldDistance = Vector2.Distance(oldTouch1.position, oldTouch2.position);//计算两点距离 float newDistance = Vector2.Distance(newTouch1.position, newTouch2.position);//计算两点距离 float offset = newDistance - oldDistance; if (Mathf.Abs(offset) >= 3) { Debug.Log(offset); //放大因子, 一个像素按 0.01倍来算(100可调整) float scaleFactor = offset / 400f; Vector3 localScale = edit.SelectedObj.transform.localScale; Vector3 scale = new Vector3(localScale.x + scaleFactor, localScale.y + scaleFactor, localScale.z + scaleFactor); //最小缩放到 0.3 倍 最大1.5倍 if (scale.x > 0.3f && scale.x < 1.5f) { edit.SelectedObj.transform.localScale = scale;//赋新值 } //记住最新的触摸点,下次使用 oldTouch1 = newTouch1; oldTouch2 = newTouch2; } } } } } unity 使用以上代碼,將單指移動變爲滑鼠拖拽使使用滑鼠也能移動
11-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值