javascript - 使用 javascript/jQuery 更改 % 中设置的 div left 属性?
问题描述
希望你能帮我!!所以我在另一个 div 中有一个 div,我想以 14.5% 左右的步长来回移动第二个,在黑色边缘之前停止它。我已经设法在 px 中设置 left 属性,但我想用百分比来做到这一点..我该怎么做?提前致谢!PS。当然现在代码不能很好地工作,因为 px 改变了..因此我想和 %s 一起工作......
$(document).ready(function() {
$('#min_oct').click(function() {
var left = parseFloat($('.highlighted').css('left'));
console.log(left);
if(left<99.495){
$('.highlighted').css('left',left);
}
else{
left= left - 103.108;
$('.highlighted').css('left',left);
}
});
});
$(document).ready(function() {
$('#plus_oct').click(function() {
var left = parseFloat($('.highlighted').css('left'));
console.log(left);
if(left>411.111){
$('#highlighted').css('left',left);
}
else{
left= left + 103.108;
$('#highlighted').css('left',left);
}
});
});
.mini_keyboard{
position: relative;
width: 700px;;
height: 90px;
top: 22.5%;
transform: translate(35%);
border: 0.5rem solid;
box-shadow:
inset 0 0 18rem black,
inset 0 0 4rem black,
0 0 10rem black;
padding: 0.5%;
bottom: 5px;
}
.highlighted{
position: absolute;
background-color: yellow;
width: 198px;;
height: 93px;
left: 57.5%;
top: 0.5%;
opacity: 0.6;
padding: 0.5%;
bottom: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mini_keyboard">
<div id=highlight class="highlighted"></div>
</div>
<button id="min_oct">-1 octave</button>
<button id="plus_oct">+1 octave</button>
解决方案
首先,您突出显示的 id 丢失"
,您正试图通过使用类值调用 id 属性来获取您的元素。
可以用.width()
函数得到容器的宽度,然后乘以0.145计算百分比。
$(document).ready(function() {
$('#min_oct').click(function() {
var containerWidth = $(".mini_keyboard").width();
var left = parseFloat($('.highlighted').css('left'));
console.log(left);
var step = (containerWidth * 0.145);
if(left < step){
$('#highlight').css('left',left);
}
else{
left= left - step;
$('#highlight').css('left',left);
}
});
});
$(document).ready(function() {
$('#plus_oct').click(function() {
var containerWidth = $(".mini_keyboard").width();
var left = parseFloat($('.highlighted').css('left'));
console.log(left);
var step = (containerWidth * 0.145);
if(left > (containerWidth - (2*step))){
$('#highlight').css('left',left);
}
else{
left = left + step;
$('#highlight').css('left',left);
}
});
});
.mini_keyboard{
position: relative;
width: 700px;;
height: 90px;
top: 22.5%;
transform: translate(35%);
border: 0.5rem solid;
box-shadow:
inset 0 0 18rem black,
inset 0 0 4rem black,
0 0 10rem black;
padding: 0.5%;
bottom: 5px;
}
.highlighted{
position: absolute;
background-color: yellow;
width: 198px;;
height: 93px;
left: 57.5%;
top: 0.5%;
opacity: 0.6;
padding: 0.5%;
bottom: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mini_keyboard">
<div id="highlight" class="highlighted"></div>
</div>
<button id="min_oct">-1 octave</button>
<button id="plus_oct">+1 octave</button>
推荐阅读
- javascript - 由于没有称为类的 dom 属性,类绑定实际上如何在 Angular 引擎盖下工作?
- javascript - EJS中的多行字符串
- algorithm - 在网格上移动 L 形块
- java - 使用 CipherInputStream 加密文件给出的密文长度是否与文件本身相同
- regex - LengthLimitingTextInputFormatter 和表情符号
- python-3.x - 将条形图文本格式化为小数点后 2 位
- c# - 用作网格视图的数据源的复杂集合
- mysql - 如何以无特定顺序清楚地选择两列?
- c++ - 在派生类中使用基类私有成员变量的最佳方法
- airflow - Airflow initdb 停留在“将最大尝试列添加到任务实例”上