window.innerWidth和100vw的区别

本文探讨了使用JavaScript和CSS实现图片全屏显示的方法。作者最初采用JS动态设置图片宽度,后转而使用CSS的vw单位简化代码,发现两者在处理滚动条宽度上存在差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做一个弹出图片的效果

一开始我是用js写的,$('.mask img').eq(1).css({width:window.innerWidth+'px'})

后来想起来用css的vw的写法好像更简单点,设置100vw即可

这2中情况一般来说没什么区别,不过有上下滚动条的情况下,js的写法会比css的写法多一个滚动条的宽

 

转载于:https://www.cnblogs.com/DonaldTrump/p/6599475.html

import React, { useEffect, useRef } from 'react'; import * as THREE from 'three'; // @ts-ignore import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'; const VRRoom: React.FC = () => { const mountRef = useRef<HTMLDivElement>(null); useEffect(() => { // 场景 const scene = new THREE.Scene(); // 相机 const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.3, 1000 ); camera.position.set(0, 0, 0.1); // 渲染器 const renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setSize(window.innerWidth, window.innerHeight); // 控制器 const controls = new OrbitControls(camera, renderer.domElement); controls.enableZoom = false; controls.enablePan = false; controls.rotateSpeed = 0.5; // 球体几何体 const geometry = new THREE.SphereGeometry(500, 60, 40); geometry.scale(-1, 1, 1); // 反转球体,使贴图在内壁 // 贴图 const texture = new THREE.TextureLoader().load('/vr.jpg'); const material = new THREE.MeshBasicMaterial({ map: texture }); const mesh = new THREE.Mesh(geometry, material); scene.add(mesh); // 渲染函数 const animate = () => { requestAnimationFrame(animate); controls.update(); renderer.render(scene, camera); }; // 挂载 if (mountRef.current) { mountRef.current.appendChild(renderer.domElement); } animate(); // 响应式 const handleResize = () => { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize(window.innerWidth, window.innerHeight); }; window.addEventListener('resize', handleResize); // 清理 return () => { window.removeEventListener('resize', handleResize); if (mountRef.current) { mountRef.current.removeChild(renderer.domElement); } renderer.dispose(); geometry.dispose(); material.dispose(); texture.dispose(); }; }, []); return <div ref={mountRef} style={{ width: '100vw', height: '100vh', overflow: 'hidden' }} />; }; export default VRRoom;帮我找一下为什么效果是全黑
06-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值