参考stackoverflow: https://stackoverflow.com/questions/5805059/how-do-i-make-a-placeholder-for-a-select-box
<style>
	select:required:invalid {
    	color: gray;
	}
	option[value=""][disabled] {
    	display: none;
	}
	option {
    	color: black;
	}
</style>
<select required>
	<option value="" disabled selected>Select something...</option>
    <option value="1">One</option>
    <option value="2">Two</option>
</select>
总结codepen地址 :https://codepen.io/xwLyc/pen/WNeYNgP
原理
根据上面的例子做下基本的解释:
- HTML5 中,针对客户端验证(client-side validation)提供了 required 属性,同时在 CSS 里可以使用 :required (MDN:链接) 配合基本的选择器(selector)来对样式进行声明: 
select:required; - HTML5 中表单的 required 属性施加在表单[、控件]上,表示这个表单[、控件]的值是必须有的;
 - 反之,没有的时候就是非法,此时 CSS 提供了 :invalid 表示非法的伪类,一个 
<select/>是必选(:required)的但是没有选择的时候、或者值为空(value=”“)属于非法,可以这么来选择:select:required:invalid; - 上文给出的例子里,第一个 
<option/>的 value=””, 默认它是 selected (选中)的,配合有 required 属性的 parent<select/>的时,value=”” 的当前<select/>,是一个 :invalid (非法)的,配合 CSS 声明,就可以对<select/>制作一个 faked 的 placeholder 样式; - 第一个 
<option/>中还有一个 disabled 属性,在这里的作用是点开<select/>的下拉菜单之后也不能选择当这个<option/>; 
 
        
         
      
                
                
