【发布时间】:2017-02-22 06:05:44
【问题描述】:
我正在为 Web 开发课程的项目制作按钮菜单。我正在使用<div>s 创建可点击的菜单,该菜单在悬停时会改变阴影。我想要它,以便用户无法选择文本(因为它是一个按钮)。我正在使用弹性布局方案(至少我认为我做得正确)。我有以下代码,但它在不同的浏览器中表现不同。我在下面添加了一个屏幕截图链接,从左到右依次是 Chrome、Firefox 和 Safari。
这是菜单栏的代码:
<style type="text/css">
.button {
margin: 0;
padding: 5px;
background-color: #CCCCCC;
height: 100%;
font-family: helvetica, sans-serif;
display: flex;
align-items: center;
user-select: none;
}
.buttonDivider {
border-left: gray 1px solid;
height: 100%;
}
.button:hover{
background-color: gray;
cursor: pointer;
}
#buttonBar {
display: flex;
border: gray 1px solid;
border-radius: 5px;
overflow: hidden;
margin: 0 auto;
align-items: center;
user-select: none;
}
#titleBar {
display: flex;
width: 100%;
height : 40px;
padding: 5px;
background-color: #CCCCCC;
user-select: none;
}
#titleText {
display: flex;
align-items: center;
font-family: helvetica, sans-serif;
font-size: 25px;
font-weight: bold;
}
body{
margin: 0;
padding: 0;
}
div {
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<div id="titleBar">
<span id="titleText">CodePlayer</span>
<div id="buttonBar">
<div id="buttonHTML" class="button">HTML</div>
<div class="buttonDivider"></div>
<div id="buttonCSS" class="button" style="user-select:none">CSS</div>
<div class="buttonDivider"></div>
<div id="buttonJS" class="button">JavaScript</div>
<div class="buttonDivider"></div>
<div id="buttonOutput" class="button">Output</div>
</div>
</div>
但正如您从视频中看到的那样,3 种浏览器的行为完全不同(均已更新至本文的最新版本,Chrome 56、Firefox 51 和 Safari 10.0.3)。铬是最接近的。它可以防止用户选择文本并在悬停时填充整个区域。唯一奇怪的是当您单击并拖动而不选择文本时,光标变为突出显示光标。 Firefox 次之,因为它在悬停时遮住了整个按钮,但不服从user-select: none,正如您所见,Safari 既不像其他两个在悬停时那样填充整个框,但也允许完全选择。
此处的屏幕截图: Video of different behaviors in different browsers. From Left to Right: Chrome, FireFox, Safari
我在做一些非标准的事情吗?还是这些错误?如果是这样,有没有办法让他们都表现得正常? 谢谢!
【问题讨论】: