When applying ::before on input it does not. So i did some search and some answer clarified that since it is a replaced element ::before or ::after will not work on them.
Now when i use appearance:none on input the ::before works on checkbox and radio but not on input:text. Can some one tell me what magic does appearance does on the input element.
I tried searching this on internet but could not find something useful
consider below piece of code:
input {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  position: relative;
}
input::before {
  content: "X";
  width: 10px;
  height: 10px;
  display: block;
  outline: 4px solid orange;
  position: absolute;
  top: 20px;
  left: 50px;
}<input type="text" name="" id="">
<input type="checkbox" name="" id=""> 
    