表单元素一直是设计师的问题,他们是丑陋的他妈的,永远不会匹配网站或应用样式。在较早的年龄javascript插件中,弹出以解决此问题,以牺牲创建新问题。首先让我在这种情况下没有使用JS的情况,然后我将向您展示如何在逐步增强时使用CSS非常有效地使用CSS的元素&使用旧浏览器的默认样式,如IE7。

你可以 跳过表单元素造型 if you don’T WANT RANT关于不使用JavaScript。

为什么不替换自己的javascript自己的本机实现

行为

制作一个javascript插件,使一个选择元素的行为完全像原生物就是很难的(键盘支持,没有JS&等等),但即使你需要问,你想要复制哪些默认浏览器行为,Chrome? IE浏览器?

浏览器介绍更多&例如,用户(以及您的)的更多实用程序现在在IE10上有一个显示文本图标。当您使用JavaScript替换表单元素时,您将来在未来的奇数时,用户期望使用应用程序中使用表单找到的行为,因为默认行为随浏览器版本而变化。

这个错误

甚至 选择 哪个是最古老的(且可以说是最好的)插件,以风格选择元素在其错误跟踪器中有150个问题。本机实现具有零错误&无论他使用的浏览器如何,都可以始终按预期工作。

有时奇怪的加载页面状态

大多数JS插件都构建以显示JavaScript被禁用时显示默认表单元素,不幸的是可以创建一些奇怪的加载效果。有时,对于分秒,您可以看到这些元素或/&内容移动有点像隐藏的边距正在消失。

代码膨胀

这些脚本通常很短,这在您的应用程序上添加了加载,+您必须处理这些插件状态,这意味着更多代码& more bugs &实现更长。

& then the ugly

你知道div与滚动溢出替换选择选项框,那么在滚动结束时会发生什么?你开始滚动 这页纸。使用正常选择框时,当您到达结束时,它就会停止滚动,就像它应该一样。

I’我肯定有时候挑选出来,个人我首先选择了使用该网站 http://comfree.com/买房子,我正在寻找的城市是在精选方框的最后结束时,每次我都会滚动那个页面寻找那个城市,那’几次后肯定会烦人。

想要一个更好的选择框创建一个更好的元素不是一个“better” select box

您希望在“选择”框中的搜索元素?答案不使用JavaScript选择框。创建一个更好的UI元素,实际上会更好地补充您的表单。

添加搜索框通常从Get Go缺陷。你假设用户知道在大多数情况下他们不知道什么在滚动的边界溢出div的窗口后面,他们怎样才能搜索?

您还假设用户希望实际切换从使用鼠标滚动。您完全打破了流量,用户现在必须单击搜索框,然后将它们的焦点更改为键盘,然后重新键入键盘以搜索一些东西。

可能是 在UX stackoverflow上的此线程 能够 help you make a better choice with this.

造型表格元素

所以我们让你的论点’S专注于我们可以用来风格那些该死的元素的技术。如果您只希望使用CSS的示例, 点击这里.

选择

显然我们可以’T样式选项框,但我们可以在网页中显示的选择相当有效。这基本上涉及在div和风格中包装我们的选择,而不是打造选择元素。右箭头有点问题,它将在某些浏览器上显示,我们还需要在IE7上降级到正常选择框。

它在Chrome,IE10,Firefox Chrome上完全支持,部分支持,IE8上的正常箭头,IE9& firefox PC.

例子

这里基础:

    <div class="selectContainerStyled">
        <div class="arrow"&gt;</div>
        <select>
            <option value="Option 1">Option 1</option>
        </select>
   </div>
.selectContainerStyled {
  position: relative;
  border: 1px solid #b5b5b5;
  border-radius: 4px;
  background-clip: padding-box;
  background-color: #f1f1f1;
  display:inline-block;
  box-shadow: 0 1px 3px rgba(0,0,0,.13), inset 0 1px 0 #fff;
  color: 0 1px 3px rgba(0,0,0,.13), inset 0 1px 0 #fff;
  background-image: linear-gradient(bottom, #dcdcdc 0%, #dcdcdc 2%, #f3f3f3 100%);
}
.selectContainerStyled select {
  float: left;
  position: relative;
  z-index: 2;
  height: 30px;
  display: block;
  line-height: 14px;
  padding: 5px 25px 4px 5px;
  margin: 0;
  -moz-appearance: window;
  -moz-padding-end: 19px;
  background: transparent;
  background-color: transparent;
  border: none;
  -webkit-appearance: none;
  appearance: none;
}

收音机& checkbox

这次想法是在表单元素之后添加一个div,把它放在元素下方&隐藏表单元素。使用小CSS3诀窍,我们将DIV状态与小型选择器更改。

它是Chrome,IE9 +,Firefox的完全支持。

例子

这里基础:

<input checked="checked" type="radio" name="action" value="0" id="nocategory" class="radioChanged">
<div class="radioContainer"></div>
input:checked + .checkboxContainer{
  background-position:top right;
}

结论?

最终你不’T需要JavaScript制作表单元素漂亮,唯一的例外将在这里在这里的网站Clie工作,即使这意味着失去一些可用性,所有元素都希望所有元素始终相同。它’你的工作解释了你使用的技术在整个项目上的后果,但如果仍然不够,请使用一些JS替代方案,至少您尝试过。

如我所需要的注释所指出的,我需要添加:焦点选择器在通过表单与键盘的标签时添加轮廓,谢谢guys!

5 thoughts on “如何样式选择,收音机&checkbox form元素仅与css

评论被关闭。