CSS Cascading Style Sheets Brief Introduction Norman White Background • HTML was not intended to have tags for formatting a document. – Intended to define contents (headings, paragraphs etc.) • HTML 3.2 added tags like font, color – But that dramatically increased the size of html documents, and made maintenance of large web sites increasingly difficult • HTML 4.0 introduces CSS , Cascading Style Sheets • Now formatting can be moved out of the html into a CSS file. CSS Advantages • Move all style information to a single file • Can change the look of a whole site, by changing one file • Example 1 <html> <head> <link rel="stylesheet" type="text/css" href="ex1.css" /> </head> <body> <h1>This header is 36 pt</h1> <h2>This header is blue</h2> <p>This paragraph has a left margin of 50 pixels</p> </body> </html> Style Sheet Ex1.css body { background-color:yellow; } h1 { font-size:36pt; } h2 { color:blue; } p { margin-left:50px; } Result: http://www.w3schools.com/css/showit.asp?filename=ex1 Another Example <html> <head> <link rel="stylesheet" type="text/css" href="ex2.css" /> </head> <body> <h1>This is a header 1</h1> <hr /> <p>You can see that the style sheet formats the text</p> <p><a href="http://www.w3schools.com" target="_blank">This is a link</a></p> </body> </html> Style Sheet ex2.css body {background-color:tan;} h1 {color:maroon;font-size:20pt;} hr {color:navy;} p {font-size:11pt;margin-left:15px;} a:link {color:green;} a:visited {color:yellow;} a:hover {color:black;} a:active {color:blue;} Example 2 HTML and CSS html <html> <head> <link rel="stylesheet" type="text/css" href="ex2.css" /> </head> <body> <h1>This is a header 1</h1> <hr /> <p>You can see that the style sheet formats the text</p> <p> <a href="http://www.w3schools.com" target="_blank">This is a link</a> </p> </body> </html> CSS body {background-color:tan;} h1 {color:maroon;fontsize:20pt;} hr {color:navy;} p {font-size:11pt;marginleft:15px;} a:link {color:green;} a:visited {color:yellow;} a:hover {color:black;} a:active {color:blue;} CSS Syntax A CSS rule has two main parts: a selector, and one or more declarations: The selector is normally the HTML element you want to style. Each declaration consists of a property and a value. The property is the style attribute you want to change. Each property has a value. CSS Example A CSS declaration always ends with a semicolon, and declaration groups are surrounded by curly brackets: p {color:red;text-align:center;} To make the CSS more readable, you can put one declaration on each line, like this: Example p { color:red; text-align:center; } http://www.w3schools.com/css/tryit.asp?filename=trycss_syntax1 CSS Comments Comments are used to explain your code, and may help you when you edit the source code at a later date. Comments are ignored by browsers. A CSS comment begins with "/*", and ends with "*/", like this: /*This is a comment*/ p { text-align:center; /*This is another comment*/ color:black; font-family:arial; } Other Selectors, ID and CLASS The id and class Selectors In addition to setting a style for a HTML element, CSS allows you to specify your own selectors called "id" and "class". The id Selector unique The id selector is used to specify a style for a single, element. The id selector uses the id attribute of the HTML element, and is defined with a "#". The style rule below will be applied to the element with id="para1": Example #para1 { text-align:center; color:red; } http://www.w3schools.com/css/tryit.asp?filename=trycss_syntax_id Class Selector The class selector is used to specify a style for a group of elements. Unlike the id selector, the class selector is most often used on several elements. This allows you to set a particular style for many HTML elements with the same class. The class selector uses the HTML class attribute, and is defined with a "." In the example below, all HTML elements with class="center" will be center-aligned: Example .center {text-align:center;} Restrict classes to particular html tags You can also specify that only specific HTML elements should be affected by a class. In the example below, all p elements with class="center" will be center-aligned: Example p.center {text-align:center;} Methods to insert a CSS file • External Style Sheet – An external style sheet is ideal when the style is applied to many pages. With an external style sheet, you can change the look of an entire Web site by changing one file. Each page must link to the style sheet using the <link> tag. The <link> tag goes inside the head section: <head> <link rel="stylesheet" type="text/css" href="mystyle.css" /> </head> – An external style sheet can be written in any text editor. The file should not contain any html tags. Your style sheet should be saved with a .css extension. An example of a style sheet file is shown below: hr {color:sienna;} p {margin-left:20px;} body {background-image:url("images/back40.gif");} NOTE: CSS Files can be referenced that are on a different server, allowing Styles to be shared across many pages (i.e. Blogs etc.) Internal Style Sheet • An internal style sheet should be used when a single document has a unique style. You define internal styles in the head section of an HTML page, by using the <style> tag, like this: <head> <style type="text/css"> hr {color:sienna;} p {margin-left:20px;} body {background-image:url("images/back40.gif");} </style> </head> In-Line Styles • Inline Styles An inline style loses many of the advantages of style sheets by mixing content with presentation. Use this method sparingly! Best for testing only. To use inline styles you use the style attribute in the relevant tag. The style attribute can contain any CSS property. The example shows how to change the color and the left margin of a paragraph: <p style="color:sienna;margin-left:20px">This is a paragraph.</p> CASCADING – What does that mean? • What happens when we have multiple properties for the same selector, specified in different style sheets? – How do they get merged for a particular HTML element? • Multiple styles get “cascaded” together for each element. If some properties have been set for the same selector in different style sheets, the values will be inherited from the more specific style sheet. For example, an external style sheet has these properties for the h3 selector: h3 { color:red; text-align:left; font-size:8pt; } And an internal style sheet has these properties for the h3 selector: h3 { text-align:right; font-size:20pt; } If the page with the internal style sheet also links to the external style sheet the properties for h3 will be: color:red; text-align:right; font-size:20pt; The color is inherited from the external style sheet and the text-alignment and the font-size is replaced by the internal style sheet. • Multiple Styles Will Cascade into One – Styles can be specified: • inside an HTML element • inside the head section of an HTML page • in an external CSS file – Tip: Even multiple external style sheets can be referenced inside a single HTML document. • Cascading order – What style will be used when there is more than one style specified for an HTML element? – Generally speaking we can say that all the styles will "cascade" into a new "virtual" style sheet by the following rules, where number four has the highest priority: 1) Browser default 2) External style sheet 3) Internal style sheet (in the head section) 4) Inline style (inside an HTML element) – So, an inline style (inside an HTML element) has the highest priority, which means that it will override a style defined inside the <head> tag, or in an external style sheet, or in a browser (a default value). – Note: If the link to the external style sheet is placed after the internal style sheet in HTML <head>, the external style sheet will override the internal style sheet! CSS Styling • • • • • • Backgrounds Text Fonts Links Lists Tables Backgrounds • CSS Background Properties – – – – – background-color • body {background-color:#b0c4de;} • h1 {background-color:#6495ed;} p {background-color:#e0ffff;} div {background-color:#b0c4de;} background-image • body {background-image:url('paper.gif');} background-repeat • body { background-image:url('gradient2.png'); background-repeat:repeat-x; } background-attachment • body { background-image:url('smiley.gif'); background-repeat:no-repeat; background-attachment:fixed; } background-position • body { background-image:url('smiley.gif'); background-repeat:no-repeat; background-attachment:fixed; background-position:center; } Text • Text Color – – – – – – The color property is used to set the color of the text. With CSS, a color is most often specified by: a HEX value - like "#ff0000" an RGB value - like "rgb(255,0,0)" a color name - like "red" Look at CSS Color Values for a complete list of possible color values. – The default color for a page is defined in the body selector. • Example body {color:blue;} h1 {color:#00ff00;} h2 {color:rgb(255,0,0);} • Text Alignment – The text-align property is used to set the horizontal alignment of a text. – Text can be centered, or aligned to the left or right, or justified. – When text-align is set to "justify", each line is stretched so that every line has equal width, and the left and right margins are straight (like in magazines and newspapers). • Example h1 {text-align:center;} p.date {text-align:right;} p.main {text-align:justify;} • Text Decoration – The text-decoration property is used to set or remove decorations from text. – The text-decoration property is mostly used to remove underlines from links for design purposes: • Example a {text-decoration:none;} • Another Example h1 {text-decoration:overline;} h2 {text-decoration:line-through;} h3 {text-decoration:underline;} h4 {text-decoration:blink;} ALL CSS Text Properties • Property • • • • • • • • • • • color direction letter-spacing line-height text-align text-decoration text-indent Text-shadow text-transform vertical-align white-space spacing Description Sets the color of text Specifies the text direction/writing direction Increases or decreases the space between characters in a text Sets the line height Specifies the horizontal alignment of text Specifies the decoration added to text Specifies the indentation of the first line in a text-block text-shadow Specifies the shadow effect added to text Controls the capitalization of text unicode-bidi Sets the vertical alignment of an element Specifies how white-space inside an element is handled wordIncreases or decreases the space between words in a text Fonts • Many font families, see w3schools for the list Links • Links can be styled with any CSS property (e.g. color, font-family, background, etc.). • Special for links are that they can be styled differently depending on what state they are in. • The four links states are: a:link - a normal, unvisited link a:visited - a link the user has visited a:hover - a link when the user mouses over it a:active - a link the moment it is clicked • Example a:link {color:#FF0000;} /* unvisited link */ a:visited {color:#00FF00;} /* visited link */ a:hover {color:#FF00FF;} /* mouse over link */ a:active {color:#0000FF;} /* selected link */ Lists • The CSS list properties allow you to: – Set different list item markers for ordered lists – Set different list item markers for unordered lists – Set an image as the list item marker • • List I In HTML, there are two types of lists: • • • • • • unordered lists - the list items are marked with bullets ordered lists - the list items are marked with numbers or letters With CSS, lists can be styled further, and images can be used as the list item marker. Different List Item Markers The type of list item marker is specified with the list-style-type property: Example ul.a {list-style-type: circle;} ul.b {list-style-type: square;} ol.c {list-style-type: upper-roman;} ol.d {list-style-type: lower-alpha;} Images as list markers • To specify an image as the list item marker, use the list-style-image property: • Example ul { list-style-image: url('sqpurple.gif'); } Tables (see w3schools for all examples) • Examples: table, th, td { border: 1px solid black; } table { border-collapse:collapse; } table,th, td { border: 1px solid black; } table { width:100%; } th { height:50px; } The CSS Box Model (very important for mobile devices) • • • • All HTML elements can be considered as boxes. In CSS, the term "box model" is used when talking about design and layout. The CSS box model is essentially a box that wraps around HTML elements, and it consists of: margins, borders, padding, and the actual content. The box model allows us to place a border around elements and space elements in relation to other elements. The image below illustrates the box model: Box Model Components • Margin - Clears an area around the border. The margin does not have a background color, it is completely transparent • Border - A border that goes around the padding and content. The border is affected by the background color of the box • Padding - Clears an area around the content. The padding is affected by the background color of the box • Content - The content of the box, where text and images appear – In order to set the width and height of an element correctly in all browsers, you need to know how the box model works. Width and Height of an Element • • Important: When you set the width and height properties of an element with CSS, you just set the width and height of the content area. To calculate the full size of an element, you must also add the padding, borders and margins. The total width of the element in the example below is 300px: width:250px; padding:10px; border:5px solid gray; margin:10px; • • • Let's do the math: 250px (width) + 20px (left and right padding) + 10px (left and right border) + 20px (left and right margin) = 300px Assume that you had only 250px of space. Let's make an element with a total width of 250px: Example width:220px; padding:10px; border:5px solid gray; margin:0px; • The total width of an element should be calculated like this: – • Total element width = width + left padding + right padding + left border + right border + left margin + right margin The total height of an element should be calculated like this: – Total element height = height + top padding + bottom padding + top border + bottom border + top margin + bottom margin Importance of Box Model for Mobile • • Mobile devices can come in a variety of different sizes. We may want to change the layout and size of a page depending on what it is displayed on: – – – – • • • Later we will see that with HTML 5 we can dynamically determine the device size and bring in appropriate style settings for it One of the problems with mobile devices is how to reformat your information so that it is easily manipulated on a mobile device. We need to take advantage of some of the unique features of mobile devices. These include: – – – – – • • Desktop computer Iphone Ipad Android (many size devices) Touch based resizing and scrolling. Mobile devices can scroll through long lists easily, so you usually avoid multicolumn tables. Support for orientation. You may need to change the css file depending on the orientation . Shaking to indicate an action. Geolocation Many more New CSS3 and html5 elements now make it possible to eliminate much of the need for special gif and jpeg icons. (for instance, you can draw a circle by creating a box with the correct rounded borders) HTML5 and CS3 media queries allow you to specify what CSS files to use depending on the width of the device Management Takeaway • Using style sheets can make your web pages take on a customized, consistent look with very little effort. In many cases, one can find external style sheets at different sites that have already been carefully developed to give a particular look and feel. The “themes” that one can use on different sites are typically just different CSS files. • Style sheets make it much easier to change the look and feel of a set of web pages. • Style sheets will be very important when we want to have pages that display well on different screen sizes. • The ID and CLASS method of referencing html tags will also be similar to what JQuery uses to make javascript much easier to use. (as well as JQuery Mobile)