Ist es möglich, einen Stil im inneren "Aufwärtspfeil" und "Abwärtspfeil" von a <input type="number">in CSS anzuwenden ? Ich möchte den Hintergrund des Aufwärtspfeils in Blau und des Abwärtspfeils in Rot ändern. Irgendwelche Ideen?

Ist es möglich, einen Stil im inneren "Aufwärtspfeil" und "Abwärtspfeil" von a <input type="number">in CSS anzuwenden ? Ich möchte den Hintergrund des Aufwärtspfeils in Blau und des Abwärtspfeils in Rot ändern. Irgendwelche Ideen?

Antworten:
UPDATE 17/03/2017
Die ursprüngliche Lösung funktioniert nicht mehr. Die Spinner sind Teil von Shadow Dom. Fürs Erste nur um sich in Chrom zu verstecken:
input[type=number]::-webkit-inner-spin-button {
-webkit-appearance: none;
}
<input type="number" />
oder um immer zu zeigen:
input[type=number]::-webkit-inner-spin-button {
opacity: 1;
}
<input type="number" />
Sie können Folgendes versuchen, beachten Sie jedoch, dass dies nur für Chrome funktioniert :
Für Mozila
input[type=number] {
-moz-appearance: textfield;
appearance: textfield;
margin: 0;
}
Für Chrome
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
Ich habe die Antwort von @ LcSalazar ein wenig geändert ... sie ist immer noch nicht perfekt, da der Hintergrund der Standardschaltflächen sowohl in Firefox als auch in Chrome und Opera (nicht in Safari getestet) angezeigt wird. Das Klicken auf die Pfeile funktioniert jedoch weiterhin
Anmerkungen:
pointer-events: none;können Sie durch die überlappende Schaltfläche klicken, die Schaltfläche jedoch nicht formatieren, während Sie den Mauszeiger bewegen..number-wrapper {
position: relative;
}
.number-wrapper:after,
.number-wrapper:before {
position: absolute;
right: 5px;
width: 1.6em;
height: .9em;
font-size: 10px;
pointer-events: none;
background: #fff;
}
.number-wrapper:after {
color: blue;
content: "\25B2";
margin-top: 1px;
}
.number-wrapper:before {
color: red;
content: "\25BC";
margin-bottom: 5px;
bottom: -.5em;
}
<span class='number-wrapper'>
<input type="number" />
</span>
Ein wenig anders als die anderen Antworten, mit einem ähnlichen Konzept, aber Divs anstelle von Pseudoklassen:
input {
position: absolute;
left: 10px;
top: 10px;
width: 50px;
height: 20px;
padding: 0px;
font-size: 14pt;
border: solid 0.5px #000;
z-index: 1;
}
.spinner-button {
position: absolute;
cursor: default;
z-index: 2;
background-color: #ccc;
width: 14.5px;
text-align: center;
margin: 0px;
pointer-events: none;
height: 10px;
line-height: 10px;
}
#inc-button {
left: 46px;
top: 10.5px;
}
#dec-button {
left: 46px;
top: 20.5px;
}
<input type="number" value="0" min="0" max="100"/>
<div id="inc-button" class="spinner-button">+</div>
<div id="dec-button" class="spinner-button">-</div>
Verrückte Idee...
Sie könnten mit einigen Pseudoelementen herumspielen und Aufwärts- / Abwärtspfeile mit Hex-Codes für CSS-Inhalte erstellen. Die einzige Herausforderung besteht darin, die Position des Pfeils zu präzisieren, aber es kann funktionieren:
input[type="number"] {
height: 100px;
}
.number-wrapper {
position: relative;
}
.number-wrapper:hover:after {
content: "\25B2";
position: absolute;
color: blue;
left: 100%;
margin-left: -17px;
margin-top: 12%;
font-size: 11px;
}
.number-wrapper:hover:before {
content: "\25BC";
position: absolute;
color: blue;
left: 100%;
bottom: 0;
margin-left: -17px;
margin-bottom: -14%;
font-size: 11px;
}
<span class='number-wrapper'>
<input type="number" />
</span>
Ich habe damit auf Mobilgeräten und Tablets zu kämpfen. Meine Lösung bestand darin, die absolutePositionierung auf den Spinnern zu verwenden, also poste ich sie nur, falls es jemand anderem hilft:
<html><head>
<style>
body {padding: 10px;margin: 10px}
input[type=number] {
/*for absolutely positioning spinners*/
position: relative;
padding: 5px;
padding-right: 25px;
}
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
opacity: 1;
}
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button {
-webkit-appearance: inner-spin-button !important;
width: 25px;
position: absolute;
top: 0;
right: 0;
height: 100%;
}
</style>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=0"/>
</head>
<body >
<input type="number" value="1" step="1" />
</body></html>
Das CSS zum Ändern der Spinnerpfeile ist stumpf und unzuverlässig über den Browser hinweg.
Die stabilste Option, die ich gefunden habe, besteht darin, ein Bild mit Zeigerereignissen absolut zu positionieren: keine; auf den Spinnern.
In Edge nicht getestet, funktioniert aber in allen anderen Browsern.