元素绝对定位以后设置了高宽,a标签不能点击的原因总结

解决绝对定位元素点击穿透
本文探讨了元素在使用绝对定位并设置高宽后导致内部a标签无法点击的问题。主要原因是元素内容为空或背景透明。提供了三种解决方案:采用相对定位、添加透明背景图或使用特定IE背景设置。推荐使用第二种方案。

元素绝对定位以后设置了高宽,a标签不能点击的原因:

1、元素内并无内容

2、背景是透明的,无任何背景图或者颜色

解决方法:

1、如果不是绝对定位元素的,可以用相对定位

2、给元素加透明的背景图

3、IE可以只用 background:url(about:blank) 解决

第三种方法平时用用是可以的,但是在某种情况下会有bug, 比如JS拖动层时候,拖动的事件在一个透明层上面,你有设置了其他鼠标光标,这时候拖动就会出现光标闪烁的现象!

总结:用第二种方法,弄一个1*1PX的透明图就好!

转载于:https://www.cnblogs.com/heroine/p/5853169.html

<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> >```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值