【问题标题】:How can I display form with select options as horizontaly lists?如何将带有选择选项的表单显示为水平列表?
【发布时间】:2015-09-14 12:02:29
【问题描述】:

css 是否可以在代码后面显示一个带有 select 作为垂直列表的表单?

<form action="">
<select class="selectWidth" name="size" id="size" type="text">
<optgroup label="Standard">
    <option value="800x600" >800x600</option>
    <option value="1024x768" >1024x768</option>
    <option value="1280x960" >1280x960</option>
    <option value="1280x1024" >1280x1024</option>
    <option value="1400x1050" >1400x1050</option>
    <option value="1600x1200" >1600x1200</option>
    <option value="2560x2048" >2560x2048</option>
</optgroup>

<optgroup label="Widescreen">
    <option value="1024x600" >1024x600</option>
    <option value="1280x800" >1280x800</option>
    <option value="1366x768" >1366x768</option>
    <option value="1440x900" >1440x900</option>
    <option value="1600x900" >1600x900</option>
    <option value="1680x1050" >1680x1050</option>
    <option value="1920x1080" >1920x1080</option>
    <option value="1920x1200" >1920x1200</option>
    <option value="2560x1440" >2560x1440</option>
    <option value="2560x1600" >2560x1600</option>
 </optgroup>

 <optgroup label="Mobile">
     <option value="240x320" >240x320 (ipod)</option>
     <option value="320x480" >320x480 (iphone)</option>
     <option value="640x960" >640x960 (iphone4)</option>
     <option value="640x1136" >640x1136 (iphone5)</option>
     <option value="1024x1024" >1024x1024 (ipad)</option>
</optgroup>
</select>
</form>

我想这样显示:

标准:800x600 1024x768 1280x960 .....

宽屏:1024x600 1280x800 .... 2560x1600

手机:240x320 320x480 640x960 ..... 1024x1024

【问题讨论】:

  • 我不清楚你在问什么......
  • 你可以使用媒体查询为什么要使用这么复杂的方法
  • 在css中没有办法做到这一点,只要不同的分辨率应该是不同的选项。尽管使用 javascript 转换为您想要的内容会相当容易。

标签: css forms select optgroup


【解决方案1】:

你可以:

  1. 使用javascript 将select 元素转换为标记的嵌套列表;然后

  2. 使用CSS将嵌套列表显示为3个水平列表

这是你的意思吗:

var form = document.getElementsByTagName('form')[1];
var select = form.getElementsByTagName('select')[0];
var groups = select.getElementsByTagName('optgroup');

var labels = [];
var subLists = [];
var parentListItems = [];
var parentListItemText = [];

var parentList = document.createElement('ul');

for (var i = 0; i < groups.length; i++) {
		labels[i] = groups[i].getAttribute('label');
		parentListItems[i] = document.createElement('li');
		parentListItemText[i] = document.createTextNode(labels[i] + ': ');
		
		subLists[i] = document.createElement('ul');

		var options = groups[i].getElementsByTagName('option');

		for (var j = 0; j < options.length; j++) {
				var text = options[j].innerHTML;
				var subOption = document.createElement('li');
				var subOptionText = document.createTextNode(text);
				subLists[i].appendChild(subOption);
				subOption.appendChild(subOptionText);
		}

		parentList.appendChild(parentListItems[i]);
		parentListItems[i].appendChild(parentListItemText[i]);
		parentListItems[i].appendChild(subLists[i]);
}

form.insertBefore(parentList,select);

select.style.display = 'none';
h2 {
color: rgba(255, 0, 0 , 1);
}

hr {
margin: 48px;
}

ul, ul li {
display: block;
}

ul, li {
margin-left: 0;
padding-left: 0;
list-style: none;
font-weight: bold;
}

li ul, li ul li {
display: inline-block;
padding: 6px;
font-weight: normal;
}
<h2>Before:</h2>
<form action="">
<select class="selectWidth" name="size" id="size" type="text">
<optgroup label="Standard">
    <option value="800x600" >800x600</option>
    <option value="1024x768" >1024x768</option>
    <option value="1280x960" >1280x960</option>
    <option value="1280x1024" >1280x1024</option>
    <option value="1400x1050" >1400x1050</option>
    <option value="1600x1200" >1600x1200</option>
    <option value="2560x2048" >2560x2048</option>
</optgroup>

<optgroup label="Widescreen">
    <option value="1024x600" >1024x600</option>
    <option value="1280x800" >1280x800</option>
    <option value="1366x768" >1366x768</option>
    <option value="1440x900" >1440x900</option>
    <option value="1600x900" >1600x900</option>
    <option value="1680x1050" >1680x1050</option>
    <option value="1920x1080" >1920x1080</option>
    <option value="1920x1200" >1920x1200</option>
    <option value="2560x1440" >2560x1440</option>
    <option value="2560x1600" >2560x1600</option>
 </optgroup>

 <optgroup label="Mobile">
     <option value="240x320" >240x320 (ipod)</option>
     <option value="320x480" >320x480 (iphone)</option>
     <option value="640x960" >640x960 (iphone4)</option>
     <option value="640x1136" >640x1136 (iphone5)</option>
     <option value="1024x1024" >1024x1024 (ipad)</option>
</optgroup>
</select>
</form>

<hr />

<h2>After:</h2>
<form action="">
<select class="selectWidth" name="size" id="size" type="text">
<optgroup label="Standard">
    <option value="800x600" >800x600</option>
    <option value="1024x768" >1024x768</option>
    <option value="1280x960" >1280x960</option>
    <option value="1280x1024" >1280x1024</option>
    <option value="1400x1050" >1400x1050</option>
    <option value="1600x1200" >1600x1200</option>
    <option value="2560x2048" >2560x2048</option>
</optgroup>

<optgroup label="Widescreen">
    <option value="1024x600" >1024x600</option>
    <option value="1280x800" >1280x800</option>
    <option value="1366x768" >1366x768</option>
    <option value="1440x900" >1440x900</option>
    <option value="1600x900" >1600x900</option>
    <option value="1680x1050" >1680x1050</option>
    <option value="1920x1080" >1920x1080</option>
    <option value="1920x1200" >1920x1200</option>
    <option value="2560x1440" >2560x1440</option>
    <option value="2560x1600" >2560x1600</option>
 </optgroup>

 <optgroup label="Mobile">
     <option value="240x320" >240x320 (ipod)</option>
     <option value="320x480" >320x480 (iphone)</option>
     <option value="640x960" >640x960 (iphone4)</option>
     <option value="640x1136" >640x1136 (iphone5)</option>
     <option value="1024x1024" >1024x1024 (ipad)</option>
</optgroup>
</select>
</form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    相关资源
    最近更新 更多