当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > 如何用css控制input中的text和radio

CSS样式表
做网页中需要掌握的八个CSS布局技巧
CSS属性 - white-space 空白属性使用说明
用CSS构建iframe效果代码
用div+css解决出现水平滚动条问题
ul在Firefox和IE下的不同表现的解决方法
用css实现隐藏文本框
css实现行间距效果
研究了一下div+css的高度自适应问题
做网页字体大小参考 网页中同字号字体的不同单位对比列表
css 之 background-position-x
css实现兼容各个浏览器的技巧的代码
css中的行间距的代码
HTML:scrollLeft,scrollWidth,clientWidth,offsetWidth完全详解
scrollWidth,clientWidth与offsetWidth的区别
大家需要掌握的 html下SPAN和DIV的区别
布局用CSS+DIV的优点总结
纯CSS生成抗锯齿圆角的代码
IE6,IE7和firefox对DIV的支持区别
DIV+CSS布局的网站对网站SEO的影响分析
非常不错的关于IE与FireFox的js和css几处不同点[转自星火燎原]

CSS样式表 中的 如何用css控制input中的text和radio


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 482 ::
收藏到网摘: n/a

在制作表单页面的时候,如果页面有很多表单,我就不愿意单独定义一个input样式 然后每个input text下都去调用这个css(<input type="text" name="textfield" class="" />).我觉得这样每个input引用css的做法不理想,而且也太麻烦了.我习惯定义一个总的input样式。如input { border:1px solid #f00} ,这样为所有的input定义了一个红色边框。这样就必须在radio调用一个无红色边框的css 如:.radio { border:none} 把radio的红色边框去掉.但这样radio的外观就和默认情况下的相比不美观了很多。我在做网站的时候就碰到这样的问题,如图:

没有定义input,默认的情况下:

定义了input全局样式的情况下 radio的外观就难看了许多:


那如何用css控制input中的text和radio呢?软晨学习网找到了两个解决办法,还是以示例来说明:

方法一:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>css如何控制input中的text和radio</title>
<style type="text/css">
<!--
input{behavior:url(text.htc)} 
-->
</style> 
</head>
<body>
<input type="text" name="textfield" />
<input type="radio" name="radiobutton" value="radiobutton" />
</body>
</html>

就是在css中调用了text.htc文件。何谓htc文件?htc的全称就是Html Components,由微软在IE5.0后开始提供的一种新的指令组合,它是一个JavaScript的代码文件,主要把JavaScript代码封装起来。所以htc文件只在IE下有效。

在text.htc文件中写入代码:
<public:component>  
  <public:attach   event="oncontentready"   onevent="init()"   />  
  <public:attach   event="ondetach"   onevent="on_deatch()"   />  
  <script>  
  function init()  
  {  
  if(element.type=="text")  
  {  
  element.style.border="1px solid #f00"  
  }  
  }  
  </script>  
</public:component> 

ps:此方法的一个bug是在firefox下不支持。而且据说用htc比较占资源。所以不推荐使用。

方法二:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>css如何控制input中的text和radio</title>
</head>
<body>
<input type="text" name="textfield" />
 <input type="radio" name="radiobutton" value="radiobutton" />
</body>
</html>
<script language="javascript" type="text/javascript">
var obj = document.getElementsByTagName("input");
for (var i=0; i<obj.length; i++)
{
    if (obj[i].type=="text"){obj[i].style.border="1px solid #f00" }
}
</script>

ps:就是在页面最下面加上这端JS代码。这个方法比较实用,也可以推荐使用,特别感谢可乐用JS的办法来解决这个问题

示例显示: