CSS Hacks and Issues

Introduction

This article includes 8 helpful solutions which we find essential when designing with CSS

Browser-Specific selectors

These selectors are very useful when you want to change a style in one browser but not the others.

IE 6 and below

    * html {}

IE 7 and below

    *:first-child+html {} * html {}

IE 7 only

    *:first-child+html {}

IE 7 and modern browsers only

    html>body {}

Modern browsers only (not IE 7)

    html>/**/body {}

Recent Opera versions 9 and below

    html:first-child {}

Safari

    html[xmlns*=""] body:last-child {}

To use these selectors, place the code in front of the style. E.g.:

    #content-box {
            width: 300px;
            height: 150px;
            }

    * html #content-box {
            width: 250px;
            } /* overrides the above style and changes the width to 250px in IE 6 and below */

Source

Transparent PNG’s in IE6

An IE6 bug which causes a great deal of hassle is that it doesn’t support transparent PNG images.

You will need to use a filter which overrides the CSS.

    * html #image-style {
            background-image: none;
            filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="filename.png", sizingMethod="scale");
            }

Removing dotted links

Firefox produces a dotted outline that appears around links when you click on them.

dotted links

This is simple to stop. Just add outline:none to the a tag

    a {
            outline: none;
            }

Applying a width to inline elements

If you apply a width to an inline element it will only work inIE6. This is actually a fault of IE6 - inline elements shouldn't need to have a width assigned to them. However it is often useful for example if you wanted all labels in a form to be the same width.

All HTML elements are either a block or an inline element. Inline elements include span, a, strong and em. Block elements include div, p, h1, form and li.

You can’t change the width of an inline element. A way around this is to change the element from inline to block.

    span {
            width: 150px;
            display: block
            }

Applying display: block will turn the span into a block element, allowing you to change the width. One thing to note however is that block elements will always start on a new line, so you might have to use floats as well.

Centering a fixed width website

To centre your website within the browser, add relative positioning to the outer div, then set the margin to auto.

    #wrapper {
            margin: auto;
            position: relative;
            }

center content

Image replacement technique

It is always best to use text rather than an image for headings. On the odd occasion when you must have an image it is best to use a background image with hidden text within a div. This is extremely useful for screen readers and SEO as  it is still using regular text, with all the benefits associated with this.

HTML:

<h1><span>Main heading one</span></h1>

CSS:

    h1 {
            background: url(heading-image.gif) no-repeat;
            }

    h1 span {
            position:absolute;{
            text-indent: -5000px;{
            }

As you can see we are using regular HTML code for the h1 tag and using CSS to replace the text with an image. Text-indent pushes the text 5000px’s to the left, making it invisible to the user.

Try turning off your CSS style on your website and see how the heading looks.

Min-width

Another bug in IE is that it doesn’t support min-width. Min-width is extremely useful, especially for flexible templates that have a width of 100%, as it tells the browser to stop contracting. For all browsers apart from IE6 all you need ismin-width:Xpx;. e.g.:

    .container {
            min-width:300px;
            }

Getting this to work in IE6 takes some extra effort! To start you will need to create 2 divs, one embedded in the other.

    <div class=”container”>
            <div class=”holder”>Content</div>
            </div>

Then you will need the min-width which goes on the outer div.

    .container {
            min-width:300px;
            } 

Now this is where the IE hack comes into play. You will need to include the following code.

    * html .container {
            border-right: 300px solid #FFF;
            }

    * html .holder {
            display: inline-block;
            position: relative;
            margin-right: -300px;
            } 

As the browser window is resized the outer div width reduces to suit until it shrinks to the border width, at which point it will not shrink any further. The holder div follows suit and also stops shrinking. The outer div border width becomes the minimum width of the inner div.

Source

Hide horizontal scrolling

To remove the horizontal scrolling bar, insert overflow-x: hidden; into the body

    body {
            overflow-x: hidden;
            }

This is useful if you decide to have an image or flash file which has a larger width than the browser.

About Solid State Group

Solid State Group is a content management, web applications and services consultancy, who focus on making your online presence dynamic and easy to manage, at a reasonable price. Our primary goal is to complete innovative and robust websites for our clients whilst maintaining a service second to none.

Cookie Jar content management system

Solid State Group’s products allow you to completely control your company’s brand on the internet. Cookie Jar is a complete accessiblecontent management system but it’s easier to think of it as the remote control for your website.

It is accessible - Cookie Jar produces WCAG level A, Double-A, and Triple-A websites.

It is flexible - Cookie Jar can work with any kind of website design.

It is multi-user - Cookie Jar enables teams to work securely and seamlessly on a site.

It is secure - Cookie Jar has been tested by Deloitte consulting for FSA accreditation.

It is sticky - Cookie Jar comes with interactive tools such as forums, polls, quizzes, etc.

It has management tools- Cookie Jar has real-time integrated web statistics.

It has marketing tools - OutReach is an email marketing plug-in for Cookie Jar.

It uses open standards - Cookie Jar uses open standards like XML, RSS, CSV and SOAP.

It is platform independent- Cookie Jar runs on Java with a web front end.

 

Bespoke build services
Solid State Group also offer bespoke systems design and development. Some websites need a little extra functionality that simply won’t be available out of the box from any product. We specialise in capturing the exact requirements and translating them into a working site with stylish design.

Our special offer
Solid State Group offer a free consultancy meeting to capture requirements and give a ‘no strings attached’ estimate for systems design and construction. If nothing else, you will at least gain a well documented specification of your requirements, so if you are interested in our services, please do get in touch.

Contact us

Call us on +44 (0)845 838 2163

Email us at info@solidstategroup.com

Visit our website at http://www.solidstategroup.com

Tagged in: White Paper

Have your say