按钮不会改变位置

时间:2017-08-02 07:05:06

标签: javascript html css position

无处不在,我的按钮停止工作。我试图将其缩小到导致问题的原因,每当我在css中添加以下代码时都会发生这种情况 -

#filler{
    position:relative;
    left:340px;
    top:85px
}

它一直在工作,突然变得不起作用,但只有当我试图定位它时。 以下是我的所有参考代码:



function myFunction() {
  $('#Asterisk').empty();
  for (var i = 0; i < 7; i++) {

    for (var a = i; a < 7; a++) {

      $('#Asterisk').append("*");
    }

    $('#Asterisk').append("<br>");


  }


}
&#13;
#Obelix {
  border: 8px solid black;
  width: 400px;
  height: 200px;
  position: relative;
  left: 250px;
  top: 100px
}

#Getafix {
  width: 400px;
  height: 200px;
  position: relative;
  left: 75px;
  bottom: 126px
}

#Asterisk {
  position: relative;
  right: 325px;
  top: 10px;
  transform: rotate(180deg)
}

#mainwrapper {
  height: 4000px;
  width: 4000px;
  position: relative
}

#filler {
  position: relative;
  left: 340px;
  top: 85px
}

#filler {
  padding: 15px 25px;
  font-size: 24px;
  text-align: center;
  cursor: pointer;
  outline: none;
  color: #fff;
  background-color: #4CAF50;
  border: none;
  border-radius: 15px;
  box-shadow: 0 9px #999;
}

#filler:hover {
  background-color: #3e8e41
}

#filler:active {
  background-color: #3e8e41;
  box-shadow: 0 5px #666;
  transform: translateY(4px);
}
&#13;
<!DOCTYPE html>

<html>

<head>

  <link rel="stylesheet" type="text/css" href="css/looping.css">


  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js">
  </script>
  <script src="looping.js">
  </script>
</head>
<div id="mainwrapper">

  <body>
    <button id="filler" onclick="myFunction()"> Fill in the box </button>
    <div id="imgbox"> </div>
    <div id="Obelix">
      <div id="Asterisk"> </div>
      <div id="Getafix"> </div>
    </div>
</div>

</html>
&#13;
&#13;
&#13;

6 个答案:

答案 0 :(得分:1)

您需要更改按钮的堆叠顺序,我已将z-index:99;添加到#filler现在正在工作

&#13;
&#13;
function myFunction() {
  $('#Asterisk').empty();
  for (var i = 0; i < 7; i++) {
    for (var a = i; a < 7; a++) {
      $('#Asterisk').append("*");
    }
    $('#Asterisk').append("<br>");
  }
}
&#13;
#Obelix {
  border: 8px solid black;
  width: 400px;
  height: 200px;
  position: relative;
  left: 250px;
  top: 100px
}

#Getafix {
  width: 400px;
  height: 200px;
  position: relative;
  left: 75px;
  bottom: 126px
}

#Asterisk {
  position: relative;
  right: 325px;
  top: 10px;
  transform: rotate(180deg)
}

#mainwrapper {
  height: 4000px;
  width: 4000px;
  position: relative
}

#filler {
  position: relative;
  left: 340px;
  top: 85px;
  z-index:99;
}

#filler {
  padding: 15px 25px;
  font-size: 24px;
  text-align: center;
  cursor: pointer;
  outline: none;
  color: #fff;
  background-color: #4CAF50;
  border: none;
  border-radius: 15px;
  box-shadow: 0 9px #999;
}

#filler:hover {
  background-color: #3e8e41
}

#filler:active {
  background-color: #3e8e41;
  box-shadow: 0 5px #666;
  transform: translateY(4px);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js">
</script>
<div id="mainwrapper">

  <body>
    <button id="filler" onclick="myFunction()"> Fill in the box </button>
    <div id="imgbox"> </div>
    <div id="Obelix">
      <div id="Asterisk"> </div>
      <div id="Getafix"> </div>
    </div>
  </body>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

问题是,一旦你定位它,你的#Getafix div就在按钮上方。您可以使用z-index更改此顺序。例如。

button {
  z-index: 1;
}

编辑:我为#Getafix添加了几乎透明的背景颜色,因此您可以看到它的位置。如果你使用z-index是没有选择的(因为你需要它在视觉上方的按钮上方),你可以在#Getafix div上使用pointer-events: none;。这会导致#Getafix忽略所有单击事件,而是传递给基础按钮。不幸的是,对poiner事件的更广泛的支持是平庸的(没有ie10或以下支持):http://caniuse.com/#feat=pointer-events

&#13;
&#13;
function myFunction(){
		$('#Asterisk').empty();
		for(var i =0;i<7;i++) { 
			
	    for(var a=i;a<7;a++) { 

		$('#Asterisk').append("*");
				
			}
			
			
		$('#Asterisk').append("<br>");
		
			
		}
		
	
	    }
&#13;
#Obelix{
    border:8px solid black;
    width:400px;
    height:200px;
    position:relative;
    left:250px;
    top:100px}

    #Getafix{
	width:400px;
    height:200px;
    position:relative;
    left:75px;
    bottom:126px;
    background-color: rgba(0,0,0,.1); /* making the #Getafix div position visible */
    }
	

    #Asterisk{
    position:relative;
    right:325px;
    top:10px;
    transform:rotate(180deg)
    }

    #mainwrapper{
	height:4000px;
    width:4000px;
    position:relative}
   
    #filler{
    position:relative;
    z-index: 1;
    left:340px;
    top:85px
    }
   
    #filler {
    padding: 15px 25px;
    font-size: 24px;
    text-align: center;
    cursor: pointer;
    outline: none;
    color: #fff;
    background-color: #4CAF50;
    border: none;
    border-radius: 15px;
    box-shadow: 0 9px #999;
    }


    #filler:hover {background-color: #3e8e41}

    #filler:active {
    background-color: #3e8e41;
    box-shadow: 0 5px #666;
    transform: translateY(4px);
    }
&#13;
<!DOCTYPE html>

      <html>
   
      <head>

    <link rel="stylesheet"
    type="text/css"
	href="css/looping.css">
	
    
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js">                       
     </script> 
     <script src="looping.js"> </script>
     </head>
     <div id="mainwrapper"> 
     <body>
     <button  id="filler" onclick="myFunction()"> Fill in the box </button>
     <div id="imgbox"> </div>
     <div id="Obelix"> 
     <div id="Asterisk"> </div>  
     <div id="Getafix">  </div>
     </div>
     </div>
     </html>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

修复div元素(#Getafix)位置或向按钮元素添加z-index(#filler)。

目前div元素(#Getafix)是重叠的宽度按钮元素和div元素捕获点击事件。

答案 3 :(得分:1)

您的按钮位于#Getafix元素下,因此无法按下。

您可以增加z-index元素的#Asterisk或将pointer-events的{​​{1}}设置为#Getafix,如下面的代码段所示。

&#13;
&#13;
none
&#13;
 function myFunction(){
		$('#Asterisk').empty();
		for(var i =0;i<7;i++) { 
			
	    for(var a=i;a<7;a++) { 

		$('#Asterisk').append("*");
				
			}
			
			
		$('#Asterisk').append("<br>");
		
			
		}
		
	
	    }
&#13;
#Obelix{
    border:8px solid black;
    width:400px;
    height:200px;
    position:relative;
    left:250px;
    top:100px}

    #Getafix{
	width:400px;
    height:200px;
    position:relative;
    left:75px;
    bottom:126px;
    pointer-events: none;
    }
	

    #Asterisk{
    position:relative;
    right:325px;
    top:10px;
    transform:rotate(180deg)
    }

    #mainwrapper{
	height:4000px;
    width:4000px;
    position:relative}
   
    #filler{
    position:relative;
    left:340px;
    top:85px
    }
   
    #filler {
    padding: 15px 25px;
    font-size: 24px;
    text-align: center;
    cursor: pointer;
    outline: none;
    color: #fff;
    background-color: #4CAF50;
    border: none;
    border-radius: 15px;
    box-shadow: 0 9px #999;
    }


    #filler:hover {background-color: #3e8e41}

    #filler:active {
    background-color: #3e8e41;
    box-shadow: 0 5px #666;
    transform: translateY(4px);
    }
&#13;
&#13;
&#13;

答案 4 :(得分:1)

你已经得到了答案。只是一个建议。不要将您的身体元素包裹在其他div内。 <body></body>应该是您的文档正文的根。

答案 5 :(得分:1)

top: 100px; css中添加bottom: 126px;并删除#Getafix

#Getafix {
    width: 400px;
    height: 200px;
    position: relative;
    left: 75px;
    /* bottom: 126px; */
    top: 100px;
}