Css按钮可见点击,但事件不注册,直到重复点击。按钮只有在重复点击后才能工作。 它们是由一个CSS脚本定制的。我永远不知道他们什么时候不会点击。 光标表示它找到了整个按钮。
这里是CSS的描述。
.button-round-leather {
background:url(img/leather_background_light_brown.png);
background-size:cover;
border-radius: 50%;
box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2), 0 6px 20px 0 rgba(0,0,0,0.19);
color: #F0E478; /* Light Gold */
cursor: pointer;
display: inline-block;
font-size: 30px;
height: 60px;
margin: 0;
padding: 20px;
padding-top: 3px;
position: relative;
text-align: center;
text-decoration: none;
transition-duration:.60s;
width: 400px;
vertical-align: top;
align-items: flex-end;
}
.button-round-leather:hover {
background:url(img/leather_background_dark_brown.png);
box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2), 0 3px 10px 0 rgba(0,0,0,0.9);
transform: scale(.95);
}
.button-round-leather:active {
content: ""; /* NEW */
background: blue; /* NEW */
display: block; /* NEW */
background-color: #f1f1f1; /* Green */
box-shadow: 0 5px #666;
transform: translateY(4px);
position: absolute; /* NEW */
padding-top: 20%;
padding-left: 35%;
position: relative;
margin-left: -20px !important;
margin-top: -120%;
text-align: center;
opacity: 0;
transition: all 0.8s
}
.button-round-leather:active:after {
padding: 0;
margin: 0;
opacity: 1;
transition: 0s
}
.button-round-leather span {
cursor: pointer;
display: inline-block;
position: relative;
transition: 0.5s;
}
.button-round-leather span:after {
content: '\00bb';
position: absolute;
opacity: 0;
top: 0;
right: -20px;
transition: 0.5s;
}
.button-round-leather:hover span {
padding-right: 25px;
}
.button-round-leather:hover span:after {
opacity: 1;
right: 0;
}
这是我的HTML代码
<DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<body>
<script>
// Store
sessionStorage.setItem("language", "");
</script>
<!-- BUTTONS FOR MEMBERS -->
<table>
<tr>
<! -- ENGLISH SPEAKING MEMBER -->
<td style="width:30%">
<button class="button-round-leather"
style="vertical-align:middle"
onclick="EnglishMember()">
<span>
Sign In
</span>
</button>
</td>
<td style="width:70%">
<label><h2>ENGLISH SPEAKING MEMBERS</h2></label>
</td>
</tr>
<!-- BUTTONS FOR GUESTS -->
<tr>
<! -- ENGLISH SPEAKING GUEST -->
<td style="width:30%">
<button class="button-round-leather"
style="vertical-align:middle"
onclick="EnglishGuest()">
<span>
I speak English
</span>
</button>
</td>
<td style="width:70%">
<label><h2>GUEST</h2></label>
</td>
</table>
<!--SET SESSION STORAGE VARIABLE -->
<!-- <div id="result"></div> -->
<script>
//TAKE MEMBERS STRAIGHT TO LOGIN SCREEN
//SET MEMBER LANGUAGE TO ENGLISH--GO TO LOGIN SCREEN
function EnglishMember(){
// CHECK BROWSER SUPPORT
if (typeof(Storage) !== "undefined") {
// STORE VARIABLE
sessionStorage.setItem("language", "DatabaseE");
// RETRIEVE VARIABLE TO DISPLAY IN RESULT
//document.getElementById("result").innerHTML = sessionStorage.getItem("language");
// GO TO WEBSITE
window.location.href = 'loginMembers.html';
} else {
// BROWSER ERROR
document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Storage...";
}
}
</script>
<script>
//TAKE GUESTS STRAIGHT TO GUEST SCREEN
//SET GUEST LANGUAGE TO ENGLISH--GO TO GUEST SCREEN
function EnglishGuest(){
// CHECK BROWSER SUPPORT
if (typeof(Storage) !== "undefined") {
// STORE VARIABLE
sessionStorage.setItem("language", "English");
// RETRIEVE VARIABLE TO DISPLAY IN RESULT
//document.getElementById("result").innerHTML = sessionStorage.getItem("language");
// GO TO WEBSITE
window.location.href = 'loginE.htm';
// BROWSER ERROR
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Storage...";
}
}
</script>
</body>
</html>
你的代码中少了一些错别字,用这个html代替。你的window.location.href = 'LoginE.html',你的".html "中的 "l "不见了。另外,你应该在你的标签中使用分号,在写完样式和onclick之后。我也添加了这些。
我相信在你的css中,当你在psuedo类后使用::时也应该使用双冒号。我也添加了这些。另外,你在文档中缺少了一些分号,我也添加了。这里是更新后的代码。
.button-round-leather {
background: url(img/leather_background_light_brown.png);
background-size: cover;
border-radius: 50%;
box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
color: #F0E478; /* Light Gold */
cursor: pointer;
display: inline-block;
font-size: 30px;
height: 60px;
margin: 0;
padding: 20px;
padding-top: 3px;
position: relative;
text-align: center;
text-decoration: none;
transition-duration: 0.6s;
width: 400px;
vertical-align: top;
align-items: flex-end;
}
.button-round-leather:hover {
background: url(img/leather_background_dark_brown.png);
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 3px 10px 0 rgba(0, 0, 0, 0.9);
transform: scale(0.95);
}
.button-round-leather span {
cursor: pointer;
display: inline-block;
position: relative;
transition: 0.5s;
}
.button-round-leather span::after {
content: '\00bb';
position: absolute;
opacity: 0;
top: 0;
right: -20px;
transition: 0.5s;
}
.button-round-leather:hover span {
padding-right: 25px;
}
.button-round-leather:hover span::after {
opacity: 1;
right: 0;
}
<html>
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<body>
<script>
// Store
sessionStorage.setItem("language", "");
</script>
<!-- BUTTONS FOR MEMBERS -->
<table>
<tr>
<! -- ENGLISH SPEAKING MEMBER -->
<td style="width:30%;">
<button class="button-round-leather" style="vertical-align:middle;" onclick="EnglishMember();">
<span>
Sign In
</span>
</button>
</td>
<td style="width:70%">
<label>
<h2>ENGLISH SPEAKING MEMBERS</h2>
</label>
</td>
</tr>
<!-- BUTTONS FOR GUESTS -->
<tr>
<! -- ENGLISH SPEAKING GUEST -->
<td style="width:30%;">
<button class="button-round-leather" style="vertical-align:middle;" onClick="EnglishGuest();">
<span>
I speak English
</span>
</button>
</td>
<td style="width:70%">
<label>
<h2>GUEST</h2>
</label>
</td>
</table>
<!--SET SESSION STORAGE VARIABLE -->
<!-- <div id="result"></div> -->
<script>
//TAKE MEMBERS STRAIGHT TO LOGIN SCREEN
//SET MEMBER LANGUAGE TO ENGLISH--GO TO LOGIN SCREEN
function EnglishMember() {
// CHECK BROWSER SUPPORT
if (typeof(Storage) !== "undefined") {
// STORE VARIABLE
sessionStorage.setItem("language", "DatabaseE");
// RETRIEVE VARIABLE TO DISPLAY IN RESULT
//document.getElementById("result").innerHTML = sessionStorage.getItem("language");
// GO TO WEBSITE
window.location.href = 'loginMembers.html';
} else {
// BROWSER ERROR
document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Storage...";
}
}
</script>
<script>
//TAKE GUESTS STRAIGHT TO GUEST SCREEN
//SET GUEST LANGUAGE TO ENGLISH--GO TO GUEST SCREEN
function EnglishGuest() {
// CHECK BROWSER SUPPORT
if (typeof(Storage) !== "undefined") {
// STORE VARIABLE
sessionStorage.setItem("language", "English");
// RETRIEVE VARIABLE TO DISPLAY IN RESULT
//document.getElementById("result").innerHTML = sessionStorage.getItem("language");
// GO TO WEBSITE
window.location.href = 'loginE.html';
// BROWSER ERROR
} else {
document.getElementById("result").innerHTML = "Sorry, your browser does not support Web Storage...";
}
}
</script>
</body>
</html>
但是,对于主要问题,你的按钮每次都在工作,问题是你必须点击的足够快,所以当你的鼠标光标还在按钮上时,鼠标点击-释放就会发生。因为你的动画使按钮快速向上飞,所以当鼠标释放时,有时没有击中按钮,而是击中了文档的主体。试着在删除动画后点击你的按钮(或者快速点击按钮的上边。)。这样可以确保当你释放鼠标点击时,它仍然在按钮的顶部",你会发现这就是问题的原因。你的解决方案是将这个动画增加半秒左右的延迟。这完全取决于你,因为我不知道你用这个来做什么,以及你希望它是怎样的。
你可以选择在按钮被点击后,用JavaScript使其移动,而不是像你在CSS中做的那样,在按钮被点击时移动。
像这样就可以了。
var d = document.getElementById("btn");
d.addEventListener('click',function(){
d.className = d.className + " moveBtn";
});
你需要添加一个你喜欢的类,这意味着按钮应该在哪里移动,就像你已经做的那样,并在上面的JS脚本中使用该类。
希望能帮到你:)