JS+style实现动态设置图片高宽

本文介绍了一种使用JavaScript动态调整图片宽度和高度的方法,该方法能够有效地控制图片展示的大小,即使图片标签中已设定固定尺寸,依然可以通过style属性进行覆盖调整。

<script type="text/javascript">
<!--
function resizeIMG(){
var objImg = document.getElementById("pictureID");//pictureID是图片ID号
var img_w = objImg.width;
var img_h = objImg.height;

var w=parseInt(img_w);var h=parseInt(img_h);

//默认图片最宽400px,最高300px,可根据需要自行修改
if( w>400 ) objImg.style.width = "400px";
if( h>300 ) objImg.style.height = "300px";
}
//-->
</script>
将以上JS代码放在<head>中
然后将<body>改成<body onload="resizeIMG()">

 在网上找了很多动态改变图片高宽的代码,都不行,偶然看到有人说用style来设置高宽的,经我实践,果然可行

即使在img标签中设置了高宽,也可改变,看来就算是设置了img的width,height,也可用style修正

我是用的win2003 + IE6 + Maxthon 1.6.1,测试通过,其它浏览器没有测试

以上代码还可以扩展,比如按比例缩小图片,有需要的可以自行修改

今天总算有些收获

<think>我们正在讨论的是在JSP页面中设置div的度和度。根据用户提供的引用,我们可以使用JavaScript动态设置,也可以使用CSS样式直接设置。由于JSP最终会生成HTML,所以我们可以使用标准的HTML和CSS方法,也可以结合JavaScript(如果需要动态改变)。 引用分析: [^1]:使用JavaScript动态调整元素的度和度(通过style属性,结合offsetWidth/offsetHeight)。 [^2]:设置span的度和度(注意span是行内元素,默认设置无效,需要转换为行内块或块元素)。 [^3]:使用JavaScript动态设置div的,以解决嵌套gridview的布局问题(避免出现窗口滚动条,而让div出现滚动条)。 [^4]:使用JavaScript设置div的度(直接通过id获取元素并设置style.width)。 因此,我们可以通过两种方式设置div的: 1. 使用CSS(内联样式、内部样式表或外部样式表)静态设置。 2. 使用JavaScript动态设置(根据用户交互或其他条件)。 由于用户的问题是在JSP页面中设置div的度和度,我们可以提供以下方法: 方法一:使用CSS内联样式(直接在div标签中设置) 示例: ```jsp <div style="width: 500px; height: 300px; background-color: #f0f0f0;"> 这是一个固定的div </div> ``` 方法二:使用CSS内部样式表(在JSP的style标签中定义) 示例: ```jsp <style> .myDiv { width: 500px; height: 300px; background-color: #e0e0e0; } </style> <div class="myDiv"> 这是一个通过CSS类设置的div </div> ``` 方法三:使用外部CSS文件(推荐,便于维护) 在外部CSS文件(如styles.css)中定义: ```css .myDiv { width: 500px; height: 300px; background-color: #d0d0d0; } ``` 在JSP页面中引入该CSS文件: ```jsp <link rel="stylesheet" type="text/css" href="styles.css"> <div class="myDiv"> 这是一个通过外部CSS设置的div </div> ``` 方法四:使用JavaScript动态设置(根据引用[1][3][4]) 如果需要根据某些条件(如窗口大小变化、用户操作等)动态调整div的,可以使用JavaScript。 示例:在页面加载后设置div的 ```jsp <div id="myDynamicDiv" style="background-color: #ccc;"> 这是一个动态设置的div </div> <script type="text/javascript"> // 页面加载完成后执行 window.onload = function() { var myDiv = document.getElementById('myDynamicDiv'); // 设置度为500像素,度为300像素 myDiv.style.width = '500px'; myDiv.style.height = '300px'; }; </script> ``` 或者,根据引用[1]中的方法,可以动态增加或减少(例如通过按钮触发): ```jsp <div id="resizableDiv" style="width:100px; height:100px; background-color:yellow; border:1px solid black;"> 可调整大小的div </div> <button onclick="resizeDiv(10,0)">增加度</button> <button onclick="resizeDiv(-10,0)">减少度</button> <button onclick="resizeDiv(0,10)">增加度</button> <button onclick="resizeDiv(0,-10)">减少度</button> <script type="text/javascript"> function resizeDiv(deltaWidth, deltaHeight) { var div = document.getElementById('resizableDiv'); // 获取当前度和度(注意:offsetWidth返回的是数字,单位是像素,但类型为数字,不包括单位) var currentWidth = div.offsetWidth; var currentHeight = div.offsetHeight; // 计算新的 var newWidth = currentWidth + deltaWidth; var newHeight = currentHeight + deltaHeight; // 设置新的(需要加上单位) div.style.width = newWidth + 'px'; div.style.height = newHeight + 'px'; } </script> ``` 注意:如果div的样式是通过CSS类设置的,那么直接通过style属性设置会覆盖类样式行内样式优先级较)。 另外,关于div的显示类型:div默认是块级元素(display:block),所以设置是有效的。而如果是行内元素(如span)则需要设置display属性(如inline-block或block)才能设置(引用[2]中提到的问题)。 因此,在JSP中设置div的,我们可以根据实际需求选择静态(CSS)或动态(JavaScript)方法。 总结步骤: 1. 确定div是否需要静态或动态设置。 2. 静态设置:使用内联样式、内部样式表或外部样式表。 3. 动态设置:使用JavaScript,在需要的时候(如页面加载完成、事件触发时)通过DOM操作设置style.width和style.height。 注意:在设置时,单位通常是像素(px),也可以是百分比(%)、em等,但需注意百分比是相对于父元素的。 如果div的需要根据数据动态生成(例如从数据库读取的数值),则可以在JSP中嵌入Java代码: ```jsp <% int divWidth = 500; // 可以从request作用域中获取或计算 int divHeight = 300; %> <div style="width:<%=divWidth%>px; height:<%=divHeight%>px;"> 通过Java变量设置 </div> ``` 但要注意,尽量避免在JSP中嵌入过多的Java代码,保持视图层的简洁。建议将业务逻辑放在Servlet或JavaBean中,然后通过EL表达式和JSTL来显示。 使用EL表达式: ```jsp <%-- 假设在Servlet中设置了request属性:request.setAttribute("divWidth", 500); --%> <div style="width:${divWidth}px; height:${divHeight}px;"> 使用EL表达式设置 </div> ``` 综上所述,根据不同的场景,可以选择不同的方法在JSP页面中设置div的度和度。 §§相关问题§§ 1. 如何在JSP中动态调整div的大小? 2. JSP页面中如何避免div设置失效? 3. 如何通过JSP后端数据控制前端div的样式?</think>在JSP页面中设置div的度和度可以通过CSS或JavaScript实现。以下是具体方法及示例,结合了您提供的参考内容: ### 方法1:使用CSS内联样式(推荐静态设置) 直接在div标签中通过`style`属性设置: ```jsp <div style="width: 500px; height: 300px; background: #f0f0f0;"> 固定尺寸的div </div> ``` ### 方法2:使用CSS类选择器(推荐批量设置) 在`<style>`标签或外部CSS文件中定义样式: ```jsp <style> .custom-div { width: 80%; height: 200px; border: 1px solid #ccc; margin: 10px; } </style> <div class="custom-div"> 通过CSS类设置的div </div> ``` ### 方法3:使用JavaScript动态设置(推荐响应式场景) 根据引用[1][3][4]的方法,通过JS动态调整尺寸: ```jsp <div id="resizableDiv" style="background: #e0e0e0;"> 动态调整大小的div </div> <script> // 页面加载时设置初始尺寸 window.onload = function() { const div = document.getElementById('resizableDiv'); div.style.width = "400px"; div.style.height = "150px"; }; // 示例:按钮点击增加尺寸(引用[1]方法) function enlargeDiv() { const div = document.getElementById('resizableDiv'); const currentWidth = div.offsetWidth; const currentHeight = div.offsetHeight; div.style.width = (currentWidth + 10) + "px"; div.style.height = (currentHeight + 10) + "px"; } </script> <button onclick="enlargeDiv()">增大10px</button> ``` ### 关键注意事项 1. **单位必须明确**(如`px`, `%`, `vw`等) ```jsp <!-- 正确 --> <div style="width: 50%; height: 30vh;"> <!-- 错误 --> <div style="width: 50; height: 30;"> ``` 2. **块级元素特性**(div默认`display:block`,度100%需主动设置) 3. **动态内容处理**(引用[3]场景) ```jsp <div id="container" style="overflow:auto; width:100%;"> <jsp:include page="动态内容.jsp"/> </div> <script> // 根据内容动态调整度 document.getElementById('container').style.height = document.body.scrollHeight + "px"; </script> ``` ### 常见问题解决 1. **设置无效的情况**(引用[2]问题): - 确保父容器有明确尺寸 - 检查CSS优先级(使用`!important`调试) ```css .force-size { width: 300px !important; height: 200px !important; } ``` 2. **响应式设计建议**: ```css /* 移动端优先 */ .responsive-div { width: 100%; height: auto; min-height: 100px; } /* 桌面端适配 */ @media (min-width: 768px) { .responsive-div { width: 50%; height: 300px; } } ``` >[!TIP] >优先使用CSS解决方案,JavaScript更适合动态交互场景。对于JSP中的动态数据,建议结合EL表达式: >```jsp ><div style="width:${bean.width}px; height:<%=request.getAttribute("height")%>px"> > 动态数据驱动的div ></div> >```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值