89

So I have a text input, im using html5, on chrome, and I want to change the look of a text input, I've removed the outline on focus (orange on chrome), I set the background to a light color #f1f1f1 but now there is like a thicker border on the top and left sides, like it's meant to look pushed in, when there is no change in background color this doesn't happen. How do I remove it? Sorry I can't provide a picture, on a mobile device.

It happens on chrome, ie, and Firefox, can't test any others.

p7adams
  • 622
  • 1
  • 9
  • 24
FabianCook
  • 20,269
  • 16
  • 67
  • 115

9 Answers9

155

border-style:solid; will override the inset style. Which is what you asked.

border:none will remove the border all together.

border-width:1px will set it up to be kind of like before the background change.

border:1px solid #cccccc is more specific and applies all three, width, style and color.

Example: https://jsbin.com/quleh/2/edit?html,output

Anthony Hatzopoulos
  • 10,437
  • 2
  • 40
  • 57
53

This is the solution for mobile safari:

  appearance: none;
  -moz-appearance: none;
  -webkit-appearance: none;

as per https://developer.mozilla.org/en-US/docs/Web/CSS/appearance

and as suggested here: Remove textarea inner shadow on Mobile Safari (iPhone)

FabianCook
  • 20,269
  • 16
  • 67
  • 115
Owen
  • 571
  • 5
  • 3
30

None of the solution are working currently. Here is my solution. You can add prefixes.

box-shadow: inset 0px 0px 0px 0px red;
atilkan
  • 4,527
  • 1
  • 30
  • 35
19

Add border: none or border: 0 to remove border at all, or border: 1px solid #ccc to make border thin and flat.

To remove ghost padding in Firefox, you can use ::-moz-focus-inner:

::-moz-focus-inner {
    border: 0;
    padding: 0;
}

See live demo.

Marat Tanalin
  • 13,927
  • 1
  • 36
  • 52
  • When I do this it has no border, yeah, but when I set the border to 1px and set the color to black only two sides are set. The other is white. – FabianCook Oct 09 '12 at 01:26
12

Set border: 1px solid black to make all sides equals and remove any kind of custom border (other than solid). Also, set box-shadow: none to remove any inset shadow applied to it.

Erick Petrucelli
  • 14,386
  • 8
  • 64
  • 84
9

Try this
outline: none;

live demo https://codepen.io/wenpingguo/pen/KQgbXq

Wenping Guo
  • 692
  • 8
  • 10
3

All browsers, including Safari (+ mobile):

input[type=text] {   
    /* Remove */
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    
    /* Optional */
    border: solid;
    box-shadow: none;
    /*etc.*/
}
Yatko
  • 8,715
  • 9
  • 40
  • 46
0

I'm working on firefox. and I was having the same issue, input type text are auto defined something looks like boxshadow inset, but it's not. the you want to change is border... just setting border:0; and you're done.

Petter Friberg
  • 21,252
  • 9
  • 60
  • 109
vincent thorpe
  • 171
  • 1
  • 10
0

here is a small snippet that might be cool to try out:

input {
border-radius: 10px;
border-color: violet;
border-style: solid;
}

note that: border-style removes the inner shadow.

input {
    border-radius: 10px;
    border-color: violet;
    border-style: solid;
  }
<input type="text"/>
bessa3301
  • 131
  • 3
  • 5