Javascript 为什么要添加';边距:0自动';滑动菜单会破坏它吗?
我正在创建一个滑动菜单,一切正常,直到我尝试使用Javascript 为什么要添加';边距:0自动';滑动菜单会破坏它吗?,javascript,jquery,css,slider,css-position,Javascript,Jquery,Css,Slider,Css Position,我正在创建一个滑动菜单,一切正常,直到我尝试使用边距:0 auto 我强烈认为问题来自相对定位和我正在使用的jQuery.animate函数。所以我正在寻找另一种方法来达到同样的效果 这是问题的症结所在 (图像无法包含,所以我在所有内容上都添加了边框,问题在于绿色边框的div) 删除页边距:0自动以查看它是否按我希望的方式工作 正文{ 保证金:0; 填充:0; } #内容{ 宽度:625px; 边框:1px纯红; } #内容分区滑块{ 位置:相对位置; 宽度:50px; 高度:100px; 背
边距:0 auto
我强烈认为问题来自相对定位和我正在使用的jQuery.animate
函数。所以我正在寻找另一种方法来达到同样的效果
这是问题的症结所在
(图像无法包含,所以我在所有内容上都添加了边框,问题在于绿色边框的div)
删除页边距:0自动代码>以查看它是否按我希望的方式工作
正文{
保证金:0;
填充:0;
}
#内容{
宽度:625px;
边框:1px纯红;
}
#内容分区滑块{
位置:相对位置;
宽度:50px;
高度:100px;
背景图片:url(images/rond.png);
背景重复:无重复;
背景位置:中心;
背景尺寸:封面;
z指数:2;
顶部:110px;
左:25px;
边框:1px纯红;
}
.菜单{
颜色:#00C;
字号:18px;
字体系列:“拟声鲨鱼!”;
位置:绝对位置;
宽度:50px;
高度:100px;
背景图片:url(images/ligne_barre.png);
背景位置:中心;
背景重复:无重复;
光标:指针;
边框:1px纯红;
}
.菜单p{
宽度:150px;
浮动:左;
位置:绝对位置;
顶部:-25px;
左:10px;
}
.菜单p:悬停{
宽度:150px;
浮动:左;
位置:绝对位置;
顶部:-25px;
颜色:红色;
}
#巴尔{
位置:相对位置;
宽度:600px;
高度:28px;
背景图片:url(images/ligne.png);
背景位置:中心;
列表样式类型:无;
顶部:25px;
填充:0;
边框:1px纯红;
}
#sousMenu1{
保证金:0;
填充:0;
边缘顶部:90像素;
背景图片:url(images/sousmenu.png);
背景位置:左;
背景重复:无重复;
溢出:隐藏;
浮动:左;
高度:150像素;
显示:无;
文本对齐:左对齐;
}
#sousMenu2{
保证金:0;
填充:0;
边缘顶部:90像素;
左边距:10px;
背景图片:url(images/sousmenu.png);
背景位置:左;
背景重复:无重复;
溢出:隐藏;
浮动:左;
高度:150像素;
显示:无;
}
#sousMenu3{
保证金:0;
填充:0;
边缘顶部:90像素;
左边距:10px;
背景图片:url(images/sousmenu.png);
背景位置:左;
背景重复:无重复;
高度:150像素;
宽度:250px;
溢出:隐藏;
浮动:左;
显示:无;
}
#sousMenu4{
保证金:0;
填充:0;
边缘顶部:90像素;
左边距:10px;
背景图片:url(images/sousmenu.png);
背景位置:左;
背景重复:无重复;
高度:150像素;
溢出:隐藏;
浮动:左;
显示:无;
}
ol{
文本对齐:左对齐;
填充顶部:20px;
}
奥拉{
文字装饰:无;
}
$(文档).ready(函数(){
函数sousmenuCache(){
$(“sousMenu1”).hide(“fast”);
$(“sousMenu2”).hide(“fast”);
$(“sousMenu3”).hide(“fast”);
$(“sousMenu4”).hide(“fast”);
}
$(“#选项1”)。单击(函数(){
sousmenuCache();
});
$(“#选项2”)。单击(函数(){
sousmenuCache();
$(“#sousMenu1”)。延迟(300)。显示(“慢”);
});
$(“#选项3”)。单击(函数(){
sousmenuCache();
$(“#sousMenu2”)。延迟(300)。显示(“慢”);
});
$(“#选项4”)。单击(函数(){
sousmenuCache();
$(“#sousMenu3”)。延迟(300)。显示(“慢”);
});
$(“#选项5”)。单击(函数(){
sousmenuCache();
});
$(“#选项6”)。单击(函数(){
sousmenuCache();
$(“#sousMenu4”)。延迟(300)。显示(“慢”);
});
//集装箱中心
var middleOption=($(“#barre”).height()-($(“#option1”).height()-$(“#barre”).height());
//菜单中的选项
var-leftOption=-70;
$(“#content#barre li”)。每个(函数(){
$(this.css('top',''+middleOption+'px');
$(this.css('left',''+(leftOption+90)+'px');
leftOption+=90;
});
$(函数(){
$(“.menu”)。单击(函数(){
var middleSlider=($(“.slider”).width()-$(“#选项1”).width())*0.5);
$(“.slider”).animate({
左:($(this.offset().left-middleSlider)
});
});
});
TweenMax.set(“#content”{
x:300
});
});
问题在于,您同时使用边距和位置来定位幻灯片,两者相互冲突。要使其处于死点,请使用左侧边距,即滑块宽度的-0.5*处,然后向左:50%
#content div.slider {
position:relative;
width: 50px;
height: 100px;
background-image:url(images/rond.png);
background-repeat:no-repeat;
background-position:center;
background-size:cover;
z-index: 2;
top: 110px;
left: 50%;
border: 1px solid green;
margin-left:-25px;
}
当您居中时,在制作动画时必须考虑额外的偏移量。很难解释,看看这个更新的小提琴:
var fix=($(document.width()-$('#content').width())*.5;//非常感谢!说到js定位,我太笨了!我们都必须从某个地方开始。我的一般方法是使用边距和填充,当它们失败时,删除它们并使用位置。盒子模型!谢谢,我花了整整一个下午的时间来解决这个问题。是的,有时候我们只是需要一双新的眼睛。
var fix = ($(document).width() - $('#content').width()) * .5; // <-- need to subtract this
$(".menu").click(function () {
var middleSlider = ($(".slider").width() - $("#option1").width()) * 0.5;
$(".slider").animate({
left: ($(this).offset().left - middleSlider - fix)
});
});