Css:仅专注于Firefox。其他不支持的浏览器

问题描述 投票:0回答:1

我仅使用html和css创建聊天弹出窗口。我有一个可以显示和隐藏聊天图标的按钮。这是代码

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>floating button demo</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<style type="text/css">

*{padding:0;margin:0;}

body{
    font-family:Verdana, Geneva, sans-serif;
    background-color:#CCC;
    font-size:12px;
}

.label-container{
    position:fixed;
    bottom:48px;
    right:105px;
    display:table;
    visibility: hidden;
}

.label-text{
    color:#FFF;
    background:rgba(51,51,51,0.5);
    display:table-cell;
    vertical-align:middle;
    padding:10px;
    border-radius:3px;
}

.label-arrow{
    display:table-cell;
    vertical-align:middle;
    color:#333;
    opacity:0.5;
}

.float{
    position:fixed;
    width:60px;
    height:60px;
    bottom:40px;
    right:40px;
    background-color:#F33;
    color:#FFF;
    border-radius:50px;
    text-align:center;
    box-shadow: 2px 2px 3px #999;
    z-index:1000;
}

ul{
    position:fixed;
    right:40px;
    padding-bottom:20px;
    bottom:80px;
    z-index:100;
}

ul li{
    list-style:none;
    margin-bottom:10px;
}

ul li a{
    background-color:#F33;
    color:#FFF;
    border-radius:50px;
    text-align:center;
    box-shadow: 2px 2px 3px #999;
    width:60px;
    height:60px;
    display:block;
}

ul:hover{
    visibility:visible!important;
    opacity:1!important;
}


.my-float{
    font-size:24px;
    margin-top:18px;
}

a#menu-share i{
    animation: rotate-in 0.5s;
}

a#menu-share:hover > i{
    animation: rotate-out 0.5s;
}

@keyframes bot-to-top {
    0%   {bottom:-40px}
    50%  {bottom:40px}
}

@keyframes scale-in {
    from {transform: scale(0);opacity: 0;}
    to {transform: scale(1);opacity: 1;}
}

@keyframes rotate-in {
    from {transform: rotate(0deg);}
    to {transform: rotate(360deg);}
}

@keyframes rotate-out {
    from {transform: rotate(360deg);}
    to {transform: rotate(0deg);}
}


a#menu-share + ul {
  visibility: hidden;
}

a#menu-share:focus + ul{
  visibility: visible;
  animation: scale-in 0.5s;
}

a#menu-share:focus {
    display: none;
}

</style>
</head>
<body>

<a href="javascript:void(0);" class="float" id="menu-close">
<i class="fa fa-times my-float"></i>
</a>

<a href="javascript:void(0);" class="float" id="menu-share">
<i class="fa fa-share my-float"></i>
</a>


<ul>
<li><a href="#" id="menu-facebook">
<i class="fa fa-facebook my-float"></i>
</a></li>
<li><a href="#" id="menu-google-plus">
<i class="fa fa-google-plus my-float"></i>
</a></li>
<li><a href="#" id="menu-twitter">
<i class="fa fa-twitter my-float"></i>
</a></li>
</ul>
</body>
</html>

该代码仅在firefox上能正常工作。我用:focus css,它只在firefox上能正常工作。其他浏览器未使用:focus打开弹出窗口。

我也制作了jsfiddle,并且在那儿工作正常。 https://jsfiddle.net/wtrx3gc9/

有人可以分享技巧或帮助我在所有浏览器上使用:focus来显示弹出窗口。

html css google-chrome firefox opera
1个回答
1
投票

在Chrome中,当您将元素赋予display: none时,元素将失去焦点。解决方案:以其他方式将其隐藏,例如通过为其指定z-index: 100;(或小于关闭按钮的z-index的任何值)。

@import url('https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css');

*{padding:0;margin:0;}

body{
    font-family:Verdana, Geneva, sans-serif;
    background-color:#CCC;
    font-size:12px;
}

.label-container{
    position:fixed;
    bottom:48px;
    right:105px;
    display:table;
    visibility: hidden;
}

.label-text{
    color:#FFF;
    background:rgba(51,51,51,0.5);
    display:table-cell;
    vertical-align:middle;
    padding:10px;
    border-radius:3px;
}

.label-arrow{
    display:table-cell;
    vertical-align:middle;
    color:#333;
    opacity:0.5;
}

.float{
    position:fixed;
    width:60px;
    height:60px;
    bottom:40px;
    right:40px;
    background-color:#F33;
    color:#FFF;
    border-radius:50px;
    text-align:center;
    box-shadow: 2px 2px 3px #999;
    z-index:1000;
}

ul{
    position:fixed;
    right:40px;
    padding-bottom:20px;
    bottom:80px;
    z-index:100;
}

ul li{
    list-style:none;
    margin-bottom:10px;
}

ul li a{
    background-color:#F33;
    color:#FFF;
    border-radius:50px;
    text-align:center;
    box-shadow: 2px 2px 3px #999;
    width:60px;
    height:60px;
    display:block;
}

ul:hover{
    visibility:visible!important;
    opacity:1!important;
}


.my-float{
    font-size:24px;
    margin-top:18px;
}

a#menu-share i{
    animation: rotate-in 0.5s;
}

a#menu-share:hover > i{
    animation: rotate-out 0.5s;
}

@keyframes bot-to-top {
    0%   {bottom:-40px}
    50%  {bottom:40px}
}

@keyframes scale-in {
    from {transform: scale(0);opacity: 0;}
    to {transform: scale(1);opacity: 1;}
}

@keyframes rotate-in {
    from {transform: rotate(0deg);}
    to {transform: rotate(360deg);}
}

@keyframes rotate-out {
    from {transform: rotate(360deg);}
    to {transform: rotate(0deg);}
}


a#menu-share + ul {
  visibility: hidden;
}

a#menu-share:focus + ul{
  visibility: visible;
  animation: scale-in 0.5s;
}

a#menu-share:focus {
   /* display: none;*/
   z-index: 100;
}
<a href="javascript:void(0);" class="float" id="menu-close">
<i class="fa fa-times my-float"></i>
</a>

<a href="javascript:void(0);" class="float" id="menu-share">
<i class="fa fa-share my-float"></i>
</a>


<ul>
<li><a href="#" id="menu-facebook">
<i class="fa fa-facebook my-float"></i>
</a></li>
<li><a href="#" id="menu-google-plus">
<i class="fa fa-google-plus my-float"></i>
</a></li>
<li><a href="#" id="menu-twitter">
<i class="fa fa-twitter my-float"></i>
</a></li>
</ul>
© www.soinside.com 2019 - 2024. All rights reserved.