webkit htm5 css reset for input elements
Asked Answered
G

5

7

This is somewhat annoying. It appears that webkit (through chrome 13 canary) is having a right go at styling various input types and it's clashing with the design in a major way.

In particular, these are causing me a headache:

  • selected element glow (via outline)
  • placeholder= text style
  • ugly glow around focused textarea and input fields

I am using boilerplate and modernizr.

A simple input[type=search] with a placeholder overrides the text styling.

I know you can target it via

input::-webkit-input-placeholder

However, this does not seem to be able to style things like text-shadow - which is a bit crap. Does anyone know if this is likely a bug that will be fixed or do I need to fall back on to a javascript placeholder solution?

The search input comes out with a white bg and removes the rounded corners defined in the base CSS class. I found a reset code:

input[type=search]::-webkit-search-decoration,
input[type=search]::-webkit-search-cancel-button,
input[type=search]::-webkit-search-results-button,
input[type=search]::-webkit-search-results-decoration {
  display: none;
}

input[type=search] {
  /* the webkit overrides need to stay at the top */
  -webkit-appearance: textfield;
  -webkit-box-sizing: content-box;
  /* your styles here */
}

and it kind of helps.

The glow around form elements I fix by setting outline: none.

I guess what I am really after is a CSS reset that takes out any pre-defined styles in the user agent stylesheet (according to web inspector) that affect it. Is there any reset available that can do that so despite of the doctype being HTML5, the elements are rendered as simply as they were before HTML5 and follow implicit rules setup for them in the base CSS?

I hate to say it but despite of all its memory hogging issues and slowness of plugins, FireFox 4 actually renders everything perfectly. Webkit should not be trying to style things for you, just provide an API that allows you to do so if you wanted to...

Gray answered 18/6, 2011 at 15:8 Comment(3)
Whats the point of dropping the decoration around an <input type=search>? The decoration is the only thing that makes it different from a normal type=text field. You may as well just use <input type=text> if you don't want the decoration.Odaodab
semantics and possibly handhelds behaviours. what's the point of any of the html-5 elements, we were fine with divs and input[type=text] anyway. :) the point is, i should be able to style them but that has to be optional if I choose to, not via stuffed user agent stylesGray
@Odaodab In (at least) Safari, <input type=search> also has a "x" (clear) button, if text is entered.Shevlo
R
5

A good form reset stylesheet (with a wee bit of JS) is Formalize.

Formalize resets everything and than works to ensure consistent forms across browsers.

Rinehart answered 27/6, 2011 at 12:59 Comment(1)
cheers, whereas it's not something I would use, github.com/nathansmith/formalize/blob/master/assets/css/… offers some interesting ideas so I will accept it.Gray
B
3

Although this may require you to define additional styling, I typically place -webkit-appearance:none on most form elements.

Bemean answered 19/10, 2012 at 19:40 Comment(0)
H
1

This seems to be working perfectly for me:

input[type=search]::-webkit-search-cancel-button,
input[type=search]::-webkit-search-decoration,
input[type=search]::-webkit-search-results-button,
input[type=search]::-webkit-search-results-decoration {
  -webkit-appearance:none;
}
input[type=search] {
  -webkit-appearance:textfield;
  -webkit-box-sizing:content-box;
}
Hawken answered 17/9, 2013 at 8:2 Comment(0)
O
0

Quoting from "HTML5: Up and Running" by Mark Pilgrim:

"The placeholder atttribute can only contain text, not HTML markup. However, there are some vendor-specific CSS extensions (http://trac.webkit.org/export/37527/trunk/LayoutTests/fast/forms/placeholder-pseudo-style.html) that allow you to style the placeholder text in some browsers.

So I imagine you will have to fall back on a scripted solution for that aspect of your question at least, especially given that so far no version of IE supports placeholder text.

Optometer answered 22/6, 2011 at 18:50 Comment(0)
G
0

CSS reset styles are always a good start, since they save you headhaches.

If you want to remove the glow you can probably play a little with the outline property like you said, also setting text-shadow:none might help.

Anyway it's just guessing if you first don't try to reset the styles with a reset, after all they are made specifically for making webpaged displayed the same on every browser.

Gabble answered 23/6, 2011 at 14:47 Comment(3)
that's the thing, they don't display the same in every browser. I am very happy with how FireFox does it but not webkit.Gray
Then I would definitely start with a reset stylesheet, until now I've been happy with the YUI CSS Reset, Fonts and Base for example. Anyway in the end I will end up creating my own stylesheet cause many of those things are not needed for my websites and there are others wich I need and aren't there. But it's really helpful anyway.Gabble
boilerplate uses a mixed bag css reset that takes elements from YUI one as well as others. but they don't cover the html5 input element styles.Gray

© 2022 - 2024 — McMap. All rights reserved.