gpt4 book ai didi

javascript - 使用 javascript 和 jquery 动态调整大小

转载 作者:行者123 更新时间:2023-11-28 10:23:14 26 4
gpt4 key购买 nike

所以我的最终目标是从头开始创建一个图像幻灯片,显示 3 张相互堆叠的图像。这应该不是问题。我的问题在于动态调整大小。我想创建一个函数,它接受宽度和高度参数并覆盖 css 中设置的默认值。在我尝试使用 attr() 函数之前,其他一切都工作正常。现在,当添加高度和宽度的参数时,没有任何变化。有什么想法/帮助吗?对我放轻松,我是前端开发的新手。有一个更好的方法吗?感谢大家。

演示.html

<!DOCTYPE html>
<html>
<head>
<script src="js/APSlider.js"></script>
<link rel="stylesheet" type="text/css" href="css/APSlider.css"/>
<script src="js/jquery-1.11.1.min.js"></script>
<style type="text/css">
.myClass{
color: blue;
}
</style>
</head>
<body>
<script type="text/javascript">
var array = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
createHTML(3, 3, array, 'myClass', 200, 500);
</script>
</body>
</html>

APSli​​der.js

//optional parameters: userClass, height, width
function createHTML(rows, columns, array, userClass, height, width){
var count = 0;

//specify if user defined class is passed.
if(typeof userClass !== undefined){
document.write('<div id="container" class="' + userClass + '">');
}
else{document.write('<div id="container">');}

document.write('<div class="innercontainer">');

//generate ul based on arguments
for(var i = 0; i < columns; i++){
document.write('<div id="logoBlock' + i + '">');
document.write('<ul type="none">');
for(var j = 0; j < rows; j++){
document.write('<li><p>' + array[count] +'</p></li>');
count++;
}
document.write('</ul>');//end ul
document.write('</div>');//end logoBlock div
}
document.write('</div>');//end innercontainer div
document.write('</div>');//end container div

//if height and width are set in parameters, call to change css. THIS IS NOT WORKING
if(typeof height !== undefined){
var individualHeight = height / rows;
$(document).ready(function() {
$("div[id*='logoBlock']").attr("height", individualHeight);
$(".innercontainer").attr("height", individualHeight);
$("#container").attr("height", individualHeight);
});
}
if(typeof width !== undefined){
$(document).ready(function() {
$("#container").attr("width", width);
$("div[id*='logoBlock']").attr("width", width);
});
}
}

APSli​​der.css

#container {
position: absolute;
border: 1px solid black;
width: 100px;
height: auto;
margin: 0;
padding: 0;
overflow: visible;
}

.innercontainer {
width: 310px;
margin: 0;
padding: 0;
}

div[id*='logoBlock'] {
position: relative;
display: inline-block;
border: 1px solid blue;
width: 100px;
height: 102px;
margin: 0;
}

最佳答案

问题是您在 css 文件中设置了高度,但没有在 html 文件中设置为内联属性。

.attr() works only on attributes and not on css properties

consider : <div width="80"><!-- blah --></div>

$("div").attr("width") -> works in this case it returns 80
$("div").attr("width",100) -> works

consider <div style="width:80px"><!-- blah --></div>

$("div").attr("width") -> does not work

because width is set in css but not as inline attribute.
instead you should use .css("width","80px") works amazing right.

为了消除这种混淆,jQuery 引入了 .height().width(),即使您将高度指定为属性或在样式表中也能正常工作

使用这个

 $("div[id*='logoBlock']").height(individualHeight);

也停止使用几乎已弃用的 document.write 方法。结果是错误的。

我建议将整个 dom 结构写成一个字符串,像这样

var x = "<div id='container'>";
x += "<div><ul> your content </ul></div>";

然后使用 .innerHTML() 或 jQuery 方法插入它,例如 $("body").html(x) 或 $("body").append(x);

关于javascript - 使用 javascript 和 jquery 动态调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23878805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com