webentwicklung-frage-antwort-db.com.de

Wie stelle ich die Option "HTML" "auswählen"?

Hier ist mein HTML: 

<select id="ddlProducts" name="ddProducts"> 
    <option>Product1 : Electronics </option>
    <option>Product2 : Sports </option>
</select>

Jetzt möchte ich, dass der Name des Produkts (d. H. "Product1", "Product2" usw.) fett ist, und seine Kategorien (dh Elektronik, Sport usw.) unter Verwendung von "css" kursiv dargestellt. Ich habe eine ähnliche Frage zu einem Jahr gefunden, aber wie dort erwähnt, ist die Verwendung von HTML und CSS nicht möglich. Hoffentlich gibt es jetzt eine Lösung. Jeder Hinweis, Irrglaube oder Trick wäre willkommen. Vielen Dank.

122
MrClan

Im Allgemeinen kannst du nicht. Dieses Element ist ein Beispiel für ein "ersetztes Element", diese sind vom Betriebssystem abhängig und nicht Teil des HTML-Browsers. Es kann nicht über CSS gestaltet werden.

Es gibt Ersatz-Plugins/Bibliotheken, die wie <select> aussehen, aber eigentlich aus HTML-Elementen bestehen, die formatiert werden können.

Nein, das ist nicht möglich, da das Styling für diese Elemente vom Betriebssystem des Benutzers übernommen wird. MSDN beantwortet Ihre Frage hier :

Mit Ausnahme von background-color und color werden Stileinstellungen, die über das Stilobjekt des Optionselements angewendet werden, ignoriert. 

49
esqew

Sie können die Optionselemente bis zu einem gewissen Grad gestalten.

Mit dem * CSS-Tag können Sie die Optionen in dem vom System gezeichneten Rahmen gestalten.

Beispiel:

#ddlProducts *
{
 border-radius:15px;
 background-color:red;
}

Das wird so aussehen:

enter image description here

24
Zoron19

Ich habe dieses gute Beispiel für das Stylen der Auswahlmöglichkeiten und Optionen gefunden und benutze es. Sie können mit dieser Auswahl alles tun, was Sie wollen. Hier ist die Geige

html

<select id="selectbox1">
    <option value="">Select an option&hellip;</option>
    <option value="aye">Aye</option>
    <option value="eh">Eh</option>
    <option value="ooh">Ooh</option>
    <option value="whoop">Whoop</option>
</select>
<select id="selectbox2">
    <option value="">Month&hellip;</option>
    <option value="january">January</option>
    <option value="february">February</option>
    <option value="march">March</option>
    <option value="april">April</option>
    <option value="may">May</option>
    <option value="june">June</option>
    <option value="july">July</option>
    <option value="august">August</option>
    <option value="september">September</option>
    <option value="october">October</option>
    <option value="november">November</option>
    <option value="december">December</option>
</select>

CSS

body {
    padding:50px;
    background-color:white;
}
.s-hidden {
    visibility:hidden;
    padding-right:10px;
}
.select {
    cursor:pointer;
    display:inline-block;
    position:relative;
    font:normal 11px/22px Arial, Sans-Serif;
    color:black;
    border:1px solid #ccc;
}
.styledSelect {
    position:absolute;
    top:0;
    right:0;
    bottom:0;
    left:0;
    background-color:white;
    padding:0 10px;
    font-weight:bold;
}
.styledSelect:after {
    content:"";
    width:0;
    height:0;
    border:5px solid transparent;
    border-color:black transparent transparent transparent;
    position:absolute;
    top:9px;
    right:6px;
}
.styledSelect:active, .styledSelect.active {
    background-color:#eee;
}
.options {
    display:none;
    position:absolute;
    top:100%;
    right:0;
    left:0;
    z-index:999;
    margin:0 0;
    padding:0 0;
    list-style:none;
    border:1px solid #ccc;
    background-color:white;
    -webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);
    -moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);
    box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);
}
.options li {
    padding:0 6px;
    margin:0 0;
    padding:0 10px;
}
.options li:hover {
    background-color:#39f;
    color:white;
}

[~ # ~] js [~ # ~]

// Iterate over each select element
$('select').each(function () {

    // Cache the number of options
    var $this = $(this),
        numberOfOptions = $(this).children('option').length;

    // Hides the select element
    $this.addClass('s-hidden');

    // Wrap the select element in a div
    $this.wrap('<div class="select"></div>');

    // Insert a styled div to sit over the top of the hidden select element
    $this.after('<div class="styledSelect"></div>');

    // Cache the styled div
    var $styledSelect = $this.next('div.styledSelect');

    // Show the first select option in the styled div
    $styledSelect.text($this.children('option').eq(0).text());

    // Insert an unordered list after the styled div and also cache the list
    var $list = $('<ul />', {
        'class': 'options'
    }).insertAfter($styledSelect);

    // Insert a list item into the unordered list for each select option
    for (var i = 0; i < numberOfOptions; i++) {
        $('<li />', {
            text: $this.children('option').eq(i).text(),
            rel: $this.children('option').eq(i).val()
        }).appendTo($list);
    }

    // Cache the list items
    var $listItems = $list.children('li');

    // Show the unordered list when the styled div is clicked (also hides it if the div is clicked again)
    $styledSelect.click(function (e) {
        e.stopPropagation();
        $('div.styledSelect.active').each(function () {
            $(this).removeClass('active').next('ul.options').hide();
        });
        $(this).toggleClass('active').next('ul.options').toggle();
    });

    // Hides the unordered list when a list item is clicked and updates the styled div to show the selected list item
    // Updates the select element to have the value of the equivalent option
    $listItems.click(function (e) {
        e.stopPropagation();
        $styledSelect.text($(this).text()).removeClass('active');
        $this.val($(this).attr('rel'));
        $list.hide();
        /* alert($this.val()); Uncomment this for demonstration! */
    });

    // Hides the unordered list when clicking outside of it
    $(document).click(function () {
        $styledSelect.removeClass('active');
        $list.hide();
    });

});
21

BEARBEITEN: Ich habe diese wunderbare Bibliothek gefunden, die das standardmäßige "select" -Element in HTML durch großartig gestaltete "select" -Elemente ersetzt: Select2 - https://select2.github.io/examples .html


Im Jahr 2011 war es Ihnen möglicherweise nicht möglich, das Element select "option" zu formatieren, aber es ist 2015! Sie können es total gestalten! Ich kann einige der Antworten aus dem Jahr 2014 nicht verstehen, die besagen, dass Sie sie nicht stylen können! CSS3 wirkt Wunder. Ich habe dies in meinem eigenen Code ausprobiert, und die Pulldown-Optionen wurden so gestaltet, wie Sie das "Auswählen" gestalten würden.

http://cssdeck.com/labs/styling-select-box-with-css3

Hier ist ein Beispielcode!

select {
    padding:3px;
    margin: 0;
    -webkit-border-radius:4px;
    -moz-border-radius:4px;
    border-radius:4px;
    -webkit-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
    -moz-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
    box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
    background: black;
    color:#888;
    border:none;
    outline:none;
    display: inline-block;
    -webkit-appearance:none;
    -moz-appearance:none;
    appearance:none;
    cursor:pointer;
}
7
Katie S

Anscheinend kann ich CSS direkt für die Variable select in Chrome festlegen. CSS- und HTML-Code unten angegeben:

.boldoption {
	font-weight: bold;
}
<select>
	<option>Some normal-font option</option>
	<option>Another normal-font option</option>
	<option class="boldoption">Some bold option</option>
</select>
 enter image description here

6
HoldOffHunger

Wie bereits erwähnt, besteht die einzige Möglichkeit darin, ein Plugin zu verwenden, das die <select>-Funktionalität ersetzt.

Eine Liste der jQuery-Plugins: http://plugins.jquery.com/tag/select/

Sehen Sie sich das Beispiel mit Select2 plugin an: http://jsfiddle.net/swsLokfj/23/

3
AlexM

Mit Bootstrap können Sie das Styling über Dateninhalte verwenden:

<select class="selectpicker">
  <option data-content="<span class='label label-success'>Relish</span>">Relish</option>
</select>

Beispiel: https://silviomoreto.github.io/bootstrap-select/examples/

3
Bhetzie

Hier bleibt eine schnelle Alternative, die Klassenumschaltung für einen Tisch. Das Verhalten ist sehr ähnlich wie bei einem select, jedoch können Übergang, Filter und Farben für jedes Kind individuell gestaltet werden.

function toggleSelect(){ 
 if (store.classList[0] === "hidden"){
    store.classList = "viewfull"
  }
  else {
    store.classList = "hidden"
  }
}
#store {
  overflow-y: scroll;
  max-height: 110px;
  max-width: 50%
 }
 
.hidden {
  display: none
 }
 
.viewfull {
  display: block
}

#store :nth-child(4) {
  background-color: Lime;
}

span {font-size:2rem;cursor:pointer}
<span onclick="toggleSelect()">⮋</span>
 <div id="store" class="hidden">
 
<ul><li><a href="#keylogger">keylogger</a></li><li><a href="#1526269343113">1526269343113</a></li><li><a href="#slow">slow</a></li><li><a href="#slow2">slow2</a></li><li><a href="#Benchmark">Benchmark</a></li><li><a href="#modal">modal</a></li><li><a href="#buma">buma</a></li><li><a href="#1526099371108">1526099371108</a></li><a href="#1526099371108o">1526099371108o</a></li><li><a href="#pwnClrB">pwnClrB</a></li><li><a href="#stars%20u">stars%20u</a></li><li><a href="#pwnClrC">pwnClrC</a></li><li><a href="#stars ">stars </a></li><li><a href="#wello">wello</a></li><li><a href="#equalizer">equalizer</a></li><li><a href="#pwnClrA">pwnClrA</a></li></ul>
 
 </div>

2
Cryptopat

Dieses Element wird vom Betriebssystem und nicht von HTML dargestellt. Es kann nicht über CSS gestaltet werden. 

	$(function() {
    var clicky;
    var t=0;
    $(document).mousedown(function(e) {
        clicky = $(e.target);
    });
    $(document).mouseup(function(e) {
        clicky = null;
    });

    $("select").focusout(function(e) {
        if (typeof clicky.attr('id') !== typeof undefined && clicky.attr('id') !== false) {
        	$(this).parents().children("span.selected").html(clicky.html());
        	$(this).children('option[value="'+clicky.attr('id')+'"]').prop('selected', true);
		}
        
        $(this).parents().children("span.lists").html('');
        

    });
    $('select > option').text(function(i, text) {
				var attr = $(this).attr('selected');
				if (typeof attr !== typeof undefined && attr !== false) {
        				$(this).parents().parents().children("span.selected").html(text);
				}
	});

		$("select").focusin(function(){
			$(this).children('option').text(function(i, text) {
    			$(this).parents().children("span.lists").append("<span class='item' id='"+$(this).attr('value')+"'>"+text+"</span>");
				});
		});

	});
select {
  width: 0px;
  height: 0px;
  overflow:hidden;
  outline: none;
  border: none;
  appearance:none;
  -moz-appearance: none;

}
label{
	display: inline-block;
	padding: 5px 10px;
	position: relative;
	width: 100px;
	height: 20px;
	background-color:#ccc;

}
label .selected{
	display: inline-block;
	overflow: hidden;
	width: 100%;
	height: 100%;
}
label span.lists{
	width: 100%;
	display: inline-block;
	position: absolute;
	top: 100%;
	left: 0px;
	box-shadow: 0px 0px 2px 0px #ccc;
	background-color:#fff;
	z-index: 9;
}
label span.item{
	display: inline-block;
	width: 100%;
	border-bottom: 1px solid #ccc;
}
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
	<form action="?" method="GET">
	<label><span class="selected">select..</span> <span class="lists"></span>
	<select name="test">
		<option value="1">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</option>
		<option value="2" selected>item 2</option>
		<option value="3">item 3</option>
		<option value="4">item 4</option>
	</select>
	</label><br>
	<label><span class="selected">select..</span> <span class="lists"></span>
	<select name="test2">
		<option value="1">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</option>
		<option value="2">item 2</option>
		<option value="3" selected>item 3</option>
		<option value="4">item 4</option>
	</select>
	</label><br>
	<button>Submit</button>
</form>

</body>
</html>

versuchen Sie dies, es kann Ihnen helfen 

[ https://codepen.io/venu9l/pen/jeNXzY][1]
1
Venkat G

Es ist 2017 und es ist IS möglich, gezielt ausgewählte Optionen zu wählen. In meinem Projekt habe ich eine Tabelle mit einer Klasse = "Variationen" , und die Auswahloptionen befinden sich in der Tabellenzelle td = "value" , und die Auswahl hat eine ID Auswahl # pa_color .Das option-Element verfügt auch über eine Klasse option = "attached" (unter anderen Klassen-Tags) . Wenn ein Benutzer als Großkunden angemeldet ist, können alle Farboptionen angezeigt werden . Einzelhandelskunden dürfen jedoch nicht zwei Farboptionen kaufen, daher habe ich sie deaktiviert

<option class="attached" disabled>color 1</option>
<option class="attached" disabled>color 2</option>

Ich brauchte ein wenig Logik, aber hier habe ich die deaktivierten Auswahloptionen ausgewählt.

CSS

table.variations td.value select#pa_color option.attached:disabled {
display: none !important;
}

Damit sind meine Farboptionen nur für Großhandelskunden sichtbar.

0
Thomas Garrison

Sie können eine Klasse hinzufügen und geben das Schriftgewicht an: 700; in Option. Durch diese Verwendung wird der gesamte Text jedoch fett.

0
Anas Chaudhary

Eigentlich können Sie hinzufügen: vorher und: nachher und diese stylen. Zumindest ist es etwas

option{
    font-size:18px;
    background-color:#ffffff;
}
option:before{
    content: ">";
    font-size:20px;
    display:none;
    padding-right:10px;
    padding-left:5px;
    color:#fff;
}
option:hover:before{
    display:inline;
}

Es ist 100% Arbeit, im Grunde wird die Auswahloption von os und nicht von html gerendert. Das ist durch den CSS-Stil nicht wirksam, im Allgemeinen .. Option {font-size: value; Hintergrundfarbe: Farbcode; Grenzradius: Wert; } Dies funktioniert zwar, aber wir können die Auffüllung, den Rand usw. nicht anpassen

var x, i, j, selElmnt, a, b, c;
/*look for any elements with the class "custom-select":*/
x = document.getElementsByClassName("custom-select");
for (i = 0; i < x.length; i++) {
  selElmnt = x[i].getElementsByTagName("select")[0];
  /*for each element, create a new DIV that will act as the selected item:*/
  a = document.createElement("DIV");
  a.setAttribute("class", "select-selected");
  a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
  x[i].appendChild(a);
  /*for each element, create a new DIV that will contain the option list:*/
  b = document.createElement("DIV");
  b.setAttribute("class", "select-items select-hide");
  for (j = 1; j < selElmnt.length; j++) {
    /*for each option in the original select element,
    create a new DIV that will act as an option item:*/
    c = document.createElement("DIV");
    c.innerHTML = selElmnt.options[j].innerHTML;
    c.addEventListener("click", function(e) {
        /*when an item is clicked, update the original select box,
        and the selected item:*/
        var y, i, k, s, h;
        s = this.parentNode.parentNode.getElementsByTagName("select")[0];
        h = this.parentNode.previousSibling;
        for (i = 0; i < s.length; i++) {
          if (s.options[i].innerHTML == this.innerHTML) {
            s.selectedIndex = i;
            h.innerHTML = this.innerHTML;
            y = this.parentNode.getElementsByClassName("same-as-selected");
            for (k = 0; k < y.length; k++) {
              y[k].removeAttribute("class");
            }
            this.setAttribute("class", "same-as-selected");
            break;
          }
        }
        h.click();
    });
    b.appendChild(c);
  }
  x[i].appendChild(b);
  a.addEventListener("click", function(e) {
      /*when the select box is clicked, close any other select boxes,
      and open/close the current select box:*/
      e.stopPropagation();
      closeAllSelect(this);
      this.nextSibling.classList.toggle("select-hide");
      this.classList.toggle("select-arrow-active");
  });
}
function closeAllSelect(elmnt) {
  /*a function that will close all select boxes in the document,
  except the current select box:*/
  var x, y, i, arrNo = [];
  x = document.getElementsByClassName("select-items");
  y = document.getElementsByClassName("select-selected");
  for (i = 0; i < y.length; i++) {
    if (elmnt == y[i]) {
      arrNo.Push(i)
    } else {
      y[i].classList.remove("select-arrow-active");
    }
  }
  for (i = 0; i < x.length; i++) {
    if (arrNo.indexOf(i)) {
      x[i].classList.add("select-hide");
    }
  }
}
/*if the user clicks anywhere outside the select box,
then close all select boxes:*/
document.addEventListener("click", closeAllSelect);
/*the container must be positioned relative:*/
.custom-select {
  position: relative;
  font-family: Arial;
}
.custom-select select {
  display: none; /*hide original SELECT element:*/
}
.select-selected {
  background-color: DodgerBlue;
}
/*style the arrow inside the select element:*/
.select-selected:after {
  position: absolute;
  content: "";
  top: 14px;
  right: 10px;
  width: 0;
  height: 0;
  border: 6px solid transparent;
  border-color: #fff transparent transparent transparent;
}
/*point the arrow upwards when the select box is open (active):*/
.select-selected.select-arrow-active:after {
  border-color: transparent transparent #fff transparent;
  top: 7px;
}
/*style the items (options), including the selected item:*/
.select-items div,.select-selected {
  color: #ffffff;
  padding: 8px 16px;
  border: 1px solid transparent;
  border-color: transparent transparent rgba(0, 0, 0, 0.1) transparent;
  cursor: pointer;
}
/*style items (options):*/
.select-items {
  position: absolute;
  background-color: DodgerBlue;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 99;
}
/*hide the items when the select box is closed:*/
.select-hide {
  display: none;
}
.select-items div:hover, .same-as-selected {
  background-color: rgba(0, 0, 0, 0.1);
}
<div class="custom-select" style="width:200px;">
  <select>
    <option value="0">Select car:</option>
    <option value="1">Audi</option>
    <option value="2">BMW</option>
    <option value="3">Citroen</option>
    <option value="4">Ford</option>
    <option value="5">Honda</option>
    <option value="6">Jaguar</option>
    <option value="7">Land Rover</option>
    <option value="8">Mercedes</option>
    <option value="9">Mini</option>
    <option value="10">Nissan</option>
    <option value="11">Toyota</option>
    <option value="12">Volvo</option>
  </select>
</div>

0
Harikrishnan k

Einige Eigenschaften können für das <option>-Tag gestaltet werden:

  • font-family
  • color
  • font-*
  • background-color

Sie können auch eine benutzerdefinierte Schriftart für einzelne <option>-Tags verwenden, z. B. jede google-Schriftart , Material-Icons oder andere Symbolschriftarten aus icomoon oder Ähnlichem. (Das kann für Font-Selektoren usw. nützlich sein.)

In Anbetracht dessen können Sie den Schriftfamilienstapel erstellen und Symbole in <option>-Tags einfügen, z.

    <select>
        <option style="font-family: 'Icons', 'Roboto', sans-serif;">a    ★★★</option>
        <option style="font-family: 'Icons', 'Roboto', sans-serif;">b    ★★★★</option>
    </select>

wobei von Icons genommen wird und der Rest von Roboto.

Beachten Sie jedoch, dass benutzerdefinierte Schriftarten für mobile Auswahl nicht funktionieren.

0
dy_