Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore Html and CSS

Html and CSS

Published by Soumen Patra, 2022-03-26 07:24:27

Description: A book for design website by JHON DUCKETT

Keywords: Html. Css. Web developments

Search

Read the Text Version

Example TEXT This example combines many of the techniques shown in this chapter. The sizes of fonts are controlled using the font-size property. The headings are changed from bold to normal using the font-weight property. We have also specified different choices of font using the font-family property. The <h1> element uses the CSS3 text-shadow property to create the drop shadow behind it. The <h2> element is converted to uppercase using the text-transform property, and to make the uppercase text easier to read, we have increased the space between each letter using the letter-spacing property.  For the main body text, we have increased the line-height property so there is a bigger gap between each line of text, thereby making it easier to read. In the first paragraph, the first-line pseudo-element allows us to style the first line of the introduction in bold. Finally, the credit is italicized and aligned to the right-hand side of the page. TEXT 294

Example TEXT <!DOCTYPE html> <html> <head> <title>Text</title> <style type=\"text/css\"> body { padding: 20px;} h1, h2, h3, a { font-weight: normal; color: #0088dd; margin: 0px;} h1 { font-family: Georgia, Times, serif; font-size: 250%; text-shadow: 2px 2px 3px #666666; padding-bottom: 10px;} h2 { font-family: \"Gill Sans\", Arial, sans-serif; font-size: 90%; text-transform: uppercase; letter-spacing: 0.2em;} h3 { font-size: 150%;} p { font-family: Arial, Verdana, sans-serif; line-height: 1.4em; color: #665544;} p.intro:first-line { font-weight: bold;} .credits { font-style: italic; text-align: right;} a { text-decoration: none;} a:hover { text-decoration: underline;} </style> </head> 295 TEXT

Example TEXT <body> <h1>Briards</h1> <h2>A Heart wrapped in fur</h2> <p class=\"intro\">The <a class=\"breed\" href=\"http://en.wikipedia.org/wikiBriard\"> briard</a>, or berger de brie, is a large breed of dog traditionally used as a herder and guardian of sheep.</p> <h3>Breed History</h3> <p>The briard, which is believed to have originated in France, has been bred for centuries to herd and to protect sheep. The breed was used by the French Army as sentries, messengers and to search for wounded soldiers because of its fine sense of hearing. Briards were used in the First World War almost to the point of extinction. Currently the population of briards is slowly recovering. Charlemagne, Napoleon, Thomas Jefferson and Lafayette all owned briards.</p> <p class=\"credits\">by Ivy Duckett</p> </body> </html> TEXT 296



Summary TEXT XX There are properties to control the choice of font, size, weight, style, and spacing. XX There is a limited choice of fonts that you can assume most people will have installed. XX If you want to use a wider range of typefaces there are several options, but you need to have the right license to use them. XX You can control the space between lines of text, individual letters, and words. Text can also be aligned to the left, right, center, or justified. It can also be indented. XX You can use pseudo-classes to change the style of an element when a user hovers over or clicks on text, or when they have visited a link.



13 Boxes XX Controlling size of boxes XX Box model for borders, margin and padding XX Displaying and hiding boxes

At the beginning of this section on CSS, you saw how CSS treats each HTML element as if it lives in its own box. You can set several properties that affect the appearance of these boxes. In this chapter you will see how to: ●● Control the dimensions of your boxes ●● Create borders around boxes ●● Set margins and padding for boxes ●● Show and hide boxes Once you have learned how to control the appearance of each box, you will see how to position these boxes on your pages in Chapter 15 when we look at page layout. 301 BOXES

BOXES 302

BAortxicDlimeensions width, height By default a box is sized just big chapter-13/width-height.html HTML enough to hold its contents. To set your own dimensions for a <div> box you can use the height and <p>The Moog company pioneered the commercial width properties. manufacture of modular voltage-controlled analog synthesizer systems in the early The most popular ways to 1950s.</p> specify the size of a box are </div> to use pixels, percentages, or ems. Traditionally, pixels have div.box { C SS been the most popular method height: 300px; R e s u lt because they allow designers to width: 300px; accurately control their size. background-color: #bbbbaa;} p{ When you use percentages, height: 75%; the size of the box is relative to width: 75%; the size of the browser window background-color: #0088dd;} or, if the box is encased within another box, it is a percentage of the size of the containing box. When you use ems, the size of the box is based on the size of text within it. Designers have recently started to use percentages and ems more for measurements as they try to create designs that are flexible across devices which have different-sized screens. In the example on the right, you can see that a containing <div> element is used which is 300 pixels wide by 300 pixels high. Inside of this is a paragraph that is 75% of the width and height of the containing element. This means that the size of the paragraph is 225 pixels wide by 225 pixels high. 303 BOXES

LimitingArWtiidctlhe min-width, max-width HTML chapter-13/min-width-max-width.html Some page designs expand and shrink to fit the size of the user's <tr> screen. In such designs, the <td><img src=\"images/rhodes.jpg\" width=\"200\" min-width property specifies height=\"100\" alt=\"Fender Rhodes\" /></td> the smallest size a box can be <td class=\"description\">The Rhodes piano is an displayed at when the browser electro-mechanical piano, invented by Harold window is narrow, and the Rhodes during the fifties and later max-width property indicates manufactured in a number of models ...</td> the maximum width a box can <td>$1400</td> stretch to when the browser </tr> window is wide. C SS These are very helpful properties to ensure that the content of td.description { pages are legible (especially on min-width: 450px; the smaller screens of handheld max-width: 650px; devices). For example, you can text-align: left; use the max-width property to padding: 5px; ensure that lines of text do not margin: 0px;} appear too wide within a big browser window and you can R e s u lt use the min-width property to make sure that they do not appear too narrow. You may find it helpful to try this example out in your browser so that you can see what happens when you increase or decrease the size of the browser window. Please note that these properties were first supported in IE7 and Firefox 2 so they will not work in older versions of these browsers. BOXES 304

LAirmtiticinlge Height min-height, max-height In the same way that you might chapter-13/min-height-max-height.html HTML want to limit the width of a box on a page, you may also want <h2>Fender Mustang</h2> to limit the height of it. This is <p>The Fender Mustang was introduced in 1964 as the achieved using the min-height basis of a major redesign of Fender's ...</p> and max-height properties. <h2>Fender Stratocaster</h2> <p>The Fender Stratocaster or \"Strat\" is one of the The example on this page most popular electric guitars of all time ...</p> demonstrates these properties <h2>Gibson Les Paul</h2> in action. It also shows you what <p>The Gibson Les Paul is a solid body electric happens when the content of the guitar that was first sold in 1952 ...</p> box takes up more space than the size specified for the box. C SS If the box is not big enough to h2, p { hold the content, and the content width: 400px; expands outside the box it can font-size: 90%; look very messy. To control line-height: 1.2em;} what happens when there is not h2 { enough space for the content of color: #0088dd; a box, you can use the overflow border-bottom: 1px solid #0088dd;} property, which is discussed on p{ the next page. min-height: 10px; max-height: 30px;} R e s u lt 305 BOXES

Overflowing CAornttiecnlet overflow HTML chapter-13/overflow.html The overflow property tells the browser what to do if the content <h2>Fender Stratocaster</h2> contained within a box is larger <p class=\"one\">The Fender Stratocaster or \"Strat\" than the box itself. It can have is one of the most popular electric guitars of one of two values: all time, and its design has been copied by many guitar makers. It was designed by Leo... </p> hidden <h2>Gibson Les Paul</h2> <p class=\"two\">The Gibson Les Paul is a solid body This property simply hides any electric guitar that was first sold in 1952. extra content that does not fit in The Les Paul was designed by Ted McCarty... </p> the box. C SS scroll p.one { This property adds a scrollbar to overflow: hidden;} the box so that users can scroll p.two { to see the missing content. overflow: scroll;} On the left, you can see two R e s u lt boxes whose contents expand beyond their set dimensions. The first example has the overflow property with a value of hidden. The second example has the overflow property with a value of scroll. The overflow property is particularly handy because some browsers allow users to adjust the size of the text to appear as large or as small as they want. If the text is set too large then the page can become an unreadable mess. Hiding the overflow on such boxes helps prevent items overlapping on the page. BOXES 306

Border, Margin & Padding Every box has three available properties that can be adjusted to control its appearance: 1 23 Border Margin Padding Every box has a border (even if Margins sit outside the edge Padding is the space between it is not visible or is specified to of the border. You can set the the border of a box and any be 0 pixels wide). The border width of a margin to create a content contained within it. separates the edge of one box gap between the borders of two Adding padding can increase the from another. adjacent boxes. readability of its contents. If you specify a width hello for a box, then the borders, margin, and padding are added to its width and height. 307 BOXES

White space & Vertical Margin With Without The padding and Margin & Padding Margin & Padding margin properties are very helpful in adding space between various items on the page. Designers refer to the space Or, imagine you had two boxes If the bottom margin of any between items on a page as sitting side by side (each with box touches the top margin of white space. Imagine you had a black border). You would not another, the browser will render a border around a box. You necessarily want the boxes to it differently than you might would not want the text to touch touch edges as this would make expect. It will only show the this border or it would become the line look twice as thick on larger of the two margins. If both harder to read. the facing sides. margins are the same size, it will only show one. BOXES 308

BAortridcelre Width border-width The border-width property chapter-13/border-width.html HTML is used to control the width of a border. The value of this <p class=\"one\">Hohner's \"Clavinet\" is essentially an property can either be given electric clavichord.</p> in pixels or using one of the <p class=\"two\">Hohner's \"Clavinet\" is essentially an following values: electric clavichord.</p> <p class=\"three\">Hohner's \"Clavinet\" is essentially thin an electric clavichord.</p> medium thick C SS (You cannot use percentages p.one { with this property.) border-width: 2px;} p.two { You can control the individual border-width: thick;} size of borders using four p.three { separate properties: border-width: 1px 4px 12px 4px;} border-top-width R e s u lt border-right-width border-bottom-width border-left-width You can also specify different widths for the four border values in one property, like so: border-width: 2px 1px 1px 2px; The values here appear in clockwise order: top, right, bottom, left. 309 BOXES

BordeArrStticyle border-style HTML chapter-13/border-style.html You can control the style of a border using the border-style <p class=\"one\">Wurlitzer Electric Piano</p> property. This property can take <p class=\"two\">Wurlitzer Electric Piano</p> the following values: <p class=\"three\">Wurlitzer Electric Piano</p> <p class=\"four\">Wurlitzer Electric Piano</p> solid a single solid line <p class=\"five\">Wurlitzer Electric Piano</p> <p class=\"six\">Wurlitzer Electric Piano</p> dotted a series of square dots <p class=\"seven\">Wurlitzer Electric Piano</p> (if your border is 2px wide, then <p class=\"eight\">Wurlitzer Electric Piano</p> the dots are 2px squared with a 2px gap between each dot) C SS dashed a series of short lines p.one {border-style: solid;} p.two {border-style: dotted;} double two solid lines (the p.three {border-style: dashed;} value of the border-width p.four {border-style: double;} property creates the sum of the p.five {border-style: groove;} two lines) p.six {border-style: ridge;} p.seven {border-style: inset;} groove appears to be carved p.eight {border-style: outset;} into the page R e s u lt ridge appears to stick out from the page inset appears embedded into the page outset looks like it is coming out of the screen hidden / none no border is shown You can individually change the styles of different borders using: border-top-style border-left-style border-right-style border-bottom-style BOXES 310

BAortridcelre Color border-color You can specify the color of a chapter-13/border-color.html HTML border using either RGB values, hex codes or CSS color names <p class=\"one\">The ARP Odyssey was introduced in (as you saw on pages 251-252). 1972.</p> <p class=\"two\">The ARP Odyssey was introduced in It is possible to individually 1972.</p> control the colors of the borders on different sides of a box using: C SS border-top-color p.one { border-right-color border-color: #0088dd;} border-bottom-color p.two { border-left-color border-color: #bbbbaa #111111 #ee3e80 #0088dd;} It is also possible to use a R e s u lt shorthand to control all four border colors in the one property: border-color: darkcyan deeppink darkcyan deeppink; The values here appear in clockwise order: top, right, bottom, left. You could also use HSL values to specify the color as shown on pages 255-256. However, these were only introduced in CSS3 and will not work in older browsers. 311 BOXES

ShorAtrhtaicnlde border HTML chapter-13/border-shorthand.html The border property allows you to specify the width, style and <p>Here is a simple chord sequence played on a color of a border in one property Hammond organ through a Leslie speaker.</p> (and the values should be coded in that specific order). C SS p{ width: 250px; border: 3px dotted #0088dd;} R e s u lt BOXES 312

PAardtidcilneg padding The padding property allows chapter-13/padding.html HTML you to specify how much space should appear between the <p>Analog synths produce a wave sound, whereas the content of an element and its sounds stored on a digital synth have been border. sampled and then turned into numbers.</p> <p class=\"example\">Analog synths produce a wave The value of this property is sound, whereas the sounds stored on a digital most often specified in pixels synth have been sampled and then ... </p> (although it is also possible to use percentages or ems). If a C SS percentage is used, the padding is a percentage of the browser p{ window (or of the containing box width: 275px; if it is inside another box). border: 2px solid #0088dd;} p.example { Please note: If a width is padding: 10px;} specified for a box, padding is added onto the width of the box. R e s u lt As you can see, the second The value of the padding property is not inherited by child elements in paragraph here is much easier the same way that the color value of the font-family property is; so to read because there is a space you need to specify the padding for every element that needs to use it. between the text and the border of the box. The box is also wider Up until Internet Explorer 6, the width of the box would include the because it has padding. padding and margins. You can see more about this on page 316. You can specify different values for each side of a box using: padding-top padding-right padding-bottom padding-left Or you can use a shorthand (where the values are in clockwise order: top, right, bottom, left): padding: 10px 5px 3px 1px; 313 BOXES

AMratricgline margin HTML chapter-13/margin.html The margin property controls the gap between boxes. Its value <p>Analog synthesizers are often said to have a is commonly given in pixels, \"warmer\" sound than their digital counterparts. although you may also use </p> percentages or ems. <p class=\"example\">Analog synthesizers are often said to have a \"warmer\" sound than their digital If one box sits on top of another, counterparts.</p> margins are collapsed , which means the larger of the two C SS margins will be used and the smaller will be disregarded. p{ width: 200px; Please note: If the width of a box border: 2px solid #0088dd; is specified then the margin is padding: 10px;} added to the width of the box. p.example { margin: 20px;} You can specify values for each side of a box using: R e s u lt margin-top The value of the margin property is not inherited by child elements in margin-right the same way that the color value of the font-family property is, so margin-bottom you need to specify the margin for every element that needs to use it. margin-left Up until Internet Explorer 6, the width of the box would include the You can also use the shorthand padding and margins. You can see more about this on page 316. (where the values are in clockwise order: top, right, bottom, left): margin: 1px 2px 3px 4px; Sometimes you might see the following, which means that the left and right margins should be 10 pixels and the top and bottom margins should be 20 pixels: margin: 10px 20px; (This same shorthand shown above can also be applied to padding.) BOXES 314

CAerntitcelreing Content If you want to center a box on chapter-13/centering-content.html HTML the page (or center it inside the element that it sits in), you <body> can set the left-margin and <p>Analog synthesizers are often said to have a right-margin to auto. \"warmer\" sound than their digital counterparts.</p> In order to center a box on the <p class=\"example\">Analog synthesizers are often page, you need to set a width said to have a \"warmer\" sound than their for the box (otherwise it will take digital counterparts.</p> up the full width of the page). </body> Once you have specified the C SS width of the box, setting the left and right margins to auto will body { make the browser put an equal text-align: center;} gap on each side of the box. This p{ centers the box on the page (or width: 300px; within the element that the box padding: 50px; sits inside). border: 20px solid #0088dd;} p.example { In order for this to work in older margin: 10px auto 10px auto; browsers (particularly IE6), the text-align: left;} element that the box sits inside should have a text-align R e s u lt property with its value set to center. The text-align property is inherited by child elements. You therefore also need to specify the text-align property on the centered box if you do not want the text inside it to be centered. 315 BOXES

IE6 BoxAMrtoidcleel Result IN IE6 Without Doctype When you specify the width of R ESULT I N i e 6 W I T H D O C TYPE a box, any padding or margin should be added to the width of it. Internet Explorer 6, however, has a quirk whereby it includes the padding and margins in the width of the box. The way around this is to ensure that you provide a DOCTYPE declaration for the HTML page. (DOCTYPE declarations were covered on page 181.) You can use either the HTML5, HTML 4 strict, or HTML 4 transitional DOCTYPE declarations to ensure that IE6 follows the correct box model. To demonstrate this, you can see the example from the left hand page shown in IE6, first without a DOCTYPE declaration and then again with the HTML5 DOCTYPE declaration. BOXES 316

AChrtaincglee Inline/Block display The display property allows chapter-13/display.html HTML you to turn an inline element <ul> C SS into a block-level element or vice <li>Home</li> versa, and can also be used to <li>Products</li> R e s u lt hide an element from the page. <li class=\"coming-soon\">Services</li> <li>About</li> The values this property can <li>Contact</li> take are: </ul> inline li { display: inline; This causes a block-level margin-right: 10px;} element to act like an inline li.coming-soon { element. display: none;} block In this example you can see This technique is often used to a list. Each item in the list is create navigation for a site, and This causes an inline element to usually treated as a block-level in this example a margin has act like a block-level element. element, but the rule for the been added to the right of each <li> elements indicates that of the items to separate them inline-block they should be treated as inline out. The rule that applies to the elements, which means they will <li> element whose class is This causes a block-level sit alongside each other rather coming-soon has been hidden element to flow like an inline than appearing on new lines. as if it were not in the page at all. element, while retaining other features of a block-level element. none This hides an element from the page. In this case, the element acts as though it is not on the page at all (although a user could still see the content of the box if they used the view source option in their browser). If you use this property, it is important to note that inline boxes are not supposed to create block-level elements. 317 BOXES

HidingArBtoixceles visibility HTML chapter-13/visibility.html The visibility property allows you to hide boxes from users <ul> but It leaves a space where the <li>Home</li> element would have been. <li>Products</li> <li class=\"coming-soon\">Services</li> This property can take two <li>About</li> values: <li>Contact</li> hidden </ul> This hides the element. C SS visible li { display: inline; This shows the element. margin-right: 10px;} li.coming-soon { If the visibility of an element visibility: hidden;} is set to hidden, a blank space will appear in its place. R e s u lt If you do not want a blank space to appear, then you should use the display property with a value of none instead (as covered on the previous page). Please note that anyone can view the contents of any elements whose visibility property has been set to hidden by viewing the source in their browser. BOXES 318

CASrSt3ic: lBeorder Images border-image The border-image property chapter-13/border-image.html HTML applies an image to the border of any box. It takes a background <p class=\"one\"></p> image and slices it into nine <p class=\"two\"></p> pieces. <p class=\"three\"></p> Here is the image. I have C SS added marks where it is sliced in the example, p.one { taking 18 pixels from each corner -moz-border-image: url(\"images/dots.gif\") to place an entire circle in each 11 11 11 11 stretch; corner. The corner slices are -webkit-border-image: url(\"images/dots.gif\") always placed in the four corners 11 11 11 11 stretch; of the box, but we have a choice border-image: url(\"images/dots.gif\") whether the sides are stretched 11 11 11 11 stretch;} or repeated. p.two { -moz-border-image: url(\"images/dots.gif\") This property requires three 11 11 11 11 round; pieces of information: -webkit-border-image: url(\"images/dots.gif\") 11 11 11 11 round; 1: The URL of the image border-image: url(\"images/dots.gif\") 2: Where to slice the image 11 11 11 11 round;} 3: What to do with the straight edges; the possible values are: R e s u lt stretch stretches the image repeat repeats the image round like repeat but if the tiles do not fit exactly, scales the tile image so they will The box must also have a border width for the image to be shown. The -moz-border-image and -webkit-border-image properties are not in the CSS specification but help earlier versions of Chrome, Firefox, and Safari display this effect. 319 BOXES

CSS3: Box ShAardtoicwles box-shadow C SS chapter-13/box-shadow.html The box-shadow property allows you to add a drop shadow p.one { around a box. It works just like -moz-box-shadow: -5px -5px #777777; the text-shadow property that -webkit-box-shadow: -5px -5px #777777; you met on page 288. It must box-shadow: -5px -5px #777777;} use at least the first of these two p.two { values as well as a color: -moz-box-shadow: 5px 5px 5px #777777; -webkit-box-shadow: 5px 5px 5px #777777; Horizontal offset box-shadow: 5px 5px 5px #777777;} Negative values position the p.three { shadow to the left of the box. -moz-box-shadow: 5px 5px 5px 5px #777777; -webkit-box-shadow: 5px 5px 5px 5px #777777; Vertical offset box-shadow: 5px 5px 5px 5px #777777;} Negative values position the p.four { shadow to the top of the box. -moz-box-shadow: 0 0 10px #777777; -webkit-box-shadow: 0 0 10px #777777; Blur distance box-shadow: 0 0 10px #777777;} If omitted, the shadow is a solid p.five { line like a border. -moz-box-shadow: inset 0 0 10px #777777; -webkit-box-shadow: inset 0 0 10px #777777; Spread of shadow box-shadow: inset 0 0 10px #777777;} If used, a positive value will cause the shadow to expand in R e s u lt all directions, and a negative value will make it contract. The inset keyword can also be used before these values to create an inner-shadow. Chrome, Firefox, and Safari were quick to support this property using the -moz-box-shadow and -webkit-box-shadow properties. These are not in the CSS specification but using them can help this style to work in these browsers. BOXES 320

ACSrSt3ic: lReounded Corners border-radius CSS3 introduces the ability to chapter-13/border-radius.html HTML create rounded corners on any box, using a property called <p>Pet Sounds featured a number of unconventional border-radius. The value instruments such as bicycle bells, buzzing indicates the size of the radius organs, harpsichords, flutes, Electro-Theremin, in pixels. dog whistles, trains, Hawaiian-sounding string instruments, Coca-Cola cans and barking dogs.</p> Older browsers that do not support this property will show a C SS box with right-angled corners. p{ The -moz-border-radius border: 5px solid #cccccc; and -webkit-border-radius padding: 20px; properties are not in the CSS width: 275px; specification. However, they text-align: center; are used in some versions of border-radius: 10px; Chrome, Firefox, and Safari to -moz-border-radius: 10px; offer early support for this style -webkit-border-radius: 10px;} (and therefore can be used to achieve this effect in more R e s u lt browsers). You can specify individual values for each corner of a box using: border-top-right-radius border-bottom-right-radius border-bottom-left-radius border-top-left-radius You can also use a shorthand of these four properties (in clockwise order: top, right, bottom, left). For example: border-radius: 5px, 10px, 5px, 10px; 321 BOXES

CSS3: EllipticalASrhtaipceles border-radius HTML chapter-13/elliptical-shapes.html To create more complex shapes, you can specify different <p class=\"one\"></p> distances for the horizontal and <p class=\"two\"></p> the vertical parts of the rounded <p class=\"three\"></p> corners. C SS For example, this will create a radius that is wider than it is tall: p.one { border-top-left-radius: 80px 50px; border-radius: 80px 50px; -moz-border-radius-top-left: 80px 50px; -webkit-border-radius-top-left: 80px 50px;} 80px p.two { border-radius: 1em 4em 1em 4em / 2em 1em 2em 1em; 50px -moz-border-radius: 1em 4em 1em 4em / 2em 1em 2em 1em; You can target just one corner -webkit-border-radius: 1em 4em 1em 4em using the individual properties / 2em 1em 2em 1em;} for that corner: p.three { padding: 0px; border-top-left-radius: border-radius: 100px; 80px 50px; -moz-border-radius: 100px; -webkit-border-radius: 100px;} There is also a shorthand for targetting all four corners at R e s u lt once; first you specify the four horizontal values, then the four vertical values, as shown in the second shape on the left. You can even create a circle by taking a square box and making the border-radius the same height as the square, as shown in the third shape on the left. BOXES 322

323 BOXES

Example BOXES In this example, you can see a simple homepage for a music shop. The whole page sits inside a <div> element with an id of page. This is centered using the margin property, with a value of auto for the left and right margins. The logo and other content are centered using this same technique. The main <div> has a double-lined border around it, and the size of this box will expand and contract if the browser window is resized. To prevent the page from becoming too narrow or too wide, the min-width and max-width properties are used. The navigation is created using an unordered list. There are borders set to the top and bottom of this list to make it stand out. The display property has been applied to each of the items in the list so they behave like inline (rather than block-level) elements. This enables the navigation links to sit next to each other horizontally. The padding property has been used to create space between each of the links. The width property for the <ul> element is set to 570 pixels, and the width property for the <p> elements beneath them is set to 600 pixels. They actually end up the same width as each other because the <ul> element also uses padding to create a gap between the border of the box it creates and the links inside of it, and any padding, borders, or margins are added to the width and height of the box. If we had not included a DOCTYPE declaration at the start of this page, the sizes of the boxes would be different to each other in Internet Explorer 6 because this browser did not implement the box model in the correct way. BOXES 324

Example BOXES <!DOCTYPE html> <html> <head> <title>Boxes</title> <style type=\"text/css\"> body { font-size: 80%; font-family: \"Courier New\", Courier, monospace; letter-spacing: 0.15em; background-color: #efefef;} #page { max-width: 940px; min-width: 720px; margin: 10px auto 10px auto; padding: 20px; border: 4px double #000; background-color: #ffffff;} #logo { width: 150px; margin: 10px auto 25px auto;} ul { width: 570px; padding: 15px; margin: 0px auto 0px auto; border-top: 2px solid #000; border-bottom: 1px solid #000; text-align: center;} li { display: inline; margin: 0px 3px;} p { text-align: center; width: 600px; margin: 20px auto 20px auto; font-weight: normal;} 325 BOXES

Example BOXES a { color: #000000; text-transform: uppercase; text-decoration: none; padding: 6px 18px 5px 18px;} a:hover, a.on { color: #cc3333; background-color: #ffffff;} </style> </head> <body> <div id=\"page\"> <div id=\"logo\"> <img src=\"images/logo.gif\" alt=\"The Analog Specialists\" /> </div> <ul id=\"navigation\"> <li><a href=\"#\" class=\"on\">Home</a></li> <li><a href=\"#\">For Sale</a></li> <li><a href=\"#\">Repairs</a></li> <li><a href=\"#\">About</a></li> <li><a href=\"#\">Contact</a></li> </ul> <p> <img src=\"images/keys.jpg\" alt=\"Fender Rhodes, Hohner Clavinet, and Wurlitzer EP200\" /> </p> <p> We specialise in the sales and repair of classic keyboards, in particular the Fender Rhodes, Wurlitzer EP200, and Hohner Clavinet. </p> </div> </body> </html> BOXES 326



Summary BOXES XX CSS treats each HTML element as if it has its own box. XX You can use CSS to control the dimensions of a box. XX You can also control the borders, margin and padding for each box with CSS. XX It is possible to hide elements using the display and visibility properties. XX Block-level boxes can be made into inline boxes, and inline boxes made into block-level boxes. XX Legibility can be improved by controlling the width of boxes containing text and the leading. XX CSS3 has introduced the ability to create image borders and rounded borders.



14 Lists, Tables and Forms XX Specifying bullet point styles XX Adding borders and backgrounds to tables XX Changing the appearance of form elements

There are several CSS properties that were created to work with specific types of HTML elements, such as lists, tables, and forms. In this chapter you will learn how to: ●● Specify the type of bullet point or numbering on lists ●● Add borders and backgrounds to table cells ●● Control the appearance of form controls Together, these properties allow you to take finer control over specific parts of your pages. 331 LISTS, TABLES AND FORMS

LISTS, TABLES AND FORMS 332

BAurltliceltePoint Styles list-style-type The list-style-type property chapter-14/list-style-type.html HTML allows you to control the shape <h1>The Complete Poems</h1> or style of a bullet point (also <h2>Emily Dickinson</h2> C SS known as a marker). <ol> R e s u lt <li>Life</li> It can be used on rules that <li>Nature</li> apply to the <ol>, <ul>, and <li> <li>Love</li> elements. <li>Time and Eternity</li> <li>The Single Hound</li> Unordered Lists </ol> For an unordered list you can use the following values: ol { list-style-type: lower-roman;} none disc circle square Ordered Lists For an ordered (numbered) list you can use the following values: decimal 123 decimal-leading-zero 01 02 03 lower-alpha abc upper-alpha ABC lower-roman i. ii. iii. upper-roman I II III 333 LISTS, TABLES AND FORMS

Images for BAurltliceltes list-style-image HTML chapter-14/list-style-image.html You can specify an image to act as a bullet point using the <h1>Index of Translated Poems</h1> list-style-image property. <h2>Arthur Rimbaud</h2> <ul> The value starts with the letters <li>Ophelia</li> url and is followed by a pair <li>To Music</li> of parentheses. Inside the <li>A Dream for Winter</li> parentheses, the path to the <li>Vowels</li> image is given inside double <li>The Drunken Boat</li> quotes. </ul> This property can be used on C SS rules that apply to the <ul> and <li> elements. ul { list-style-image: url(\"images/star.png\");} The example on this page also li { shows the use of the margin margin: 10px 0px 0px 0px;} property to increase the vertical gap between each item in the list. R e s u lt LISTS, TABLES AND FORMS 334

APortsictiloening the Marker list-style-position Lists are indented into the page chapter-14/list-style-position.html HTML by default and the list-style- <ul class=\"illuminations\"> C SS position property indicates <li>That idol, black eyes and ...</li> whether the marker should <li>Gracious son of Pan! ...</li> R e s u lt appear on the inside or the <li>When the world is reduced ...</li> outside of the box containing the </ul> main points. <ul class=\"season\"> <li>Once, if my memory serves ...</li> This property can take one of <li>Hadn't I once a youth ...</li> two values: <li>Autumn already! ...</li> </ul> outside ul { The marker sits to the left of the width: 150px;} block of text. (This is the default li { behaviour if this property is not margin: 10px;} used.) ul.illuminations { list-style-position: outside;} inside ul.season { list-style-position: inside;} The marker sits inside the box of text (which is indented). R e s u lt In the example shown, the width of the list has been limited to 150 pixels. This ensures that the text wraps onto a new line so you can see how the value of inside sits the bullet inside the first line of text. A margin has been added to each list item so that there is a clear gap between each. 335 LISTS, TABLES AND FORMS

List ShorAtrhtaicnlde list-style HTML chapter-14/list-style.html As with several of the other CSS properties, there is a property <h1>Quotes from Edgar Allan Poe</h1> that acts as a shorthand for list <ul> styles. It is called list-style, <li> I have great faith in fools; self-confidence and it allows you to express my friends call it.</li> the markers' style, image and <li>All that we see or seem is but a dream within position properties in any order. a dream.</li> <li>I would define, in brief, the poetry of words as the rhythmical creation of Beauty.</li> </ul> C SS ul { list-style: inside circle; width: 300px;} li { margin: 10px 0px 0px 0px;} R e s u lt LISTS, TABLES AND FORMS 336

TAarbtlicelPeroperties You have already met several chapter-14/table-properties.html HTML properties that are commonly used with tables. Here we will <h1>First Edition Auctions</h1> put them together in a single <table> example using the following: <tr> <th>Author</th> width to set the width of the <th>Title</th> table <th class=\"money\">Reserve Price</th> <th class=\"money\">Current Bid</th> padding to set the space </tr> between the border of each table <tr> cell and its content <td>E.E. Cummings</td> <td>Tulips & Chimneys</td> text-transform to convert the <td class=\"money\">$2,000.00</td> content of the table headers to <td class=\"money\">$2,642.50</td> uppercase </tr> <tr class=\"even\"> letter-spacing, font-size <td>Charles d'Orleans</td> to add additional styling to the <td>Poemes</td> content of the table headers <td class=\"money\"></td> <td class=\"money\">$5,866.00</td> border-top, border-bottom </tr> to set borders above and below <tr> the table headers <td>T.S. Eliot</td> <td>Poems 1909 - 1925</td> text-align to align the writing <td class=\"money\">$1,250.00</td> to the left of some table cells and <td class=\"money\">$8,499.35</td> to the right of the others </tr> <tr class=\"even\"> background-color to change <td>Sylvia Plath</td> the background color of the <td>The Colossus</td> alternating table rows <td class=\"money\"></td> <td class=\"money\">$1031.72</td> :hover to highlight a table row </tr> when a user's mouse goes over it </table> 337 LISTS, TABLES AND FORMS

Article C SS Here are some tips for styling tables to ensure they are clean body { and easy to follow: font-family: Arial, Verdana, sans-serif; color: #111111;} Give cells padding table { If the text in a table cell either width: 600px;} touches a border (or another th, td { cell), it becomes much harder to padding: 7px 10px 10px 10px;} read. Adding padding helps to th { improve readability. text-transform: uppercase; letter-spacing: 0.1em; Distinguish headings font-size: 90%; Putting all table headings in border-bottom: 2px solid #111111; bold (the default style for the border-top: 1px solid #999; <th> element) makes them text-align: left;} easier to read. You can also tr.even { make headings uppercase and background-color: #efefef;} then either add a background tr:hover { color or an underline to clearly background-color: #c3e6e5;} distinguish them from content. .money { text-align: right;} Shade alternate rows Shading every other row can R e s u lt help users follow along the lines. Use a subtle distinction from the normal color of the rows to keep the table looking clean. Align numerals You can use the text-align property to align the content of any column that contains numbers to the right, so that large numbers are clearly distinguished from smaller ones. Online extra There are more examples of using CSS to style tables in the tools section of the website. LISTS, TABLES AND FORMS 338

ABortridcelre on Empty Cells empty-cells If you have empty cells in chapter-14/empty-cells.html HTML your table, then you can use C SS the empty-cells property to <table class=\"one\"> specify whether or not their <tr> R e s u lt borders should be shown. <td>1</td> <td>2</td> Since browsers treat empty cells </tr> in different ways, if you want to <tr> explicitly show or hide borders <td>3</td> on any empty cells then you <td></td> should use this property. </tr> </table> It can take one of three values: td { show border: 1px solid #0088dd; padding: 15px;} This shows the borders of any table.one { empty cells. empty-cells: show;} table.two { hide empty-cells: hide;} This hides the borders of any empty cells. inherit If you have one table nested inside another, the inherit value instructs the table cells to obey the rules of the containing table. In the first table on the left, you can see that the border of the empty cell is showing. In the second table, it is hidden. 339 LISTS, TABLES AND FORMS

Gaps BetweeAnrCteiclles border-spacing, border-collapse HTML chapter-14/gaps-between-cells.html The border-spacing property allows you to control the <table class=\"one\"> distance between adjacent cells. <tr> By default, browsers often leave <td>1</td> a small gap between each table <td>2</td> cell, so if you want to increase </tr> or decrease this space then <tr> the border-spacing property <td>3</td> allows you to control the gap. <td>4</td> </tr> The value of this property is </table> usually specified in pixels. You can specify two values if desired C SS to specify separate numbers for horizontal and vertical spacing. td { background-color: #0088dd; When a border has been used padding: 15px; on table cells, where two cells border: 2px solid #000000;} meet, the width of lines would be table.one { twice that of the outside edges. border-spacing: 5px 15px;} It is possible to collapse adjacent table.two { borders to prevent this using the border-collapse: collapse;} border-collapse property. Possible values are: R e s u lt collapse Borders are collapsed into a single border where possible. (border-spacing will be ignored and cells pushed together, and empty-cells properties will be ignored.) separate Borders are detached from each other. (border-spacing and empty-cells will be obeyed.) LISTS, TABLES AND FORMS 340

Styling Forms Nobody I know enjoys filling Mac: Safari Mac: Firefox in forms, so if you can make Pc: Chrome Pc: IE yours look more attractive and easier to use, more people are likely to fill it in. Also, when you come to look at a form in a few different browsers (as shown on the right), you will see that each browser displays them differently. CSS is commonly used to control the appearance of form elements. This is both to make them more attractive and to make them more consistent across different browsers It is most common to style: ●● Text inputs and text areas ●● Submit buttons ●● Labels on forms, to get the form controls to align nicely In the coming pages you will see how to control these with CSS. Styling text inputs and submit To achieve this, you might like to forms look consistent across buttons is fairly easy. It is download the CSS files available browsers. Although the solution harder to get select boxes, radio at http://formalize.me. incorporates JavaScript, no prior buttons, and checkboxes to look The author of this website has knowledge of this is needed in consistent across all browsers. done the hard work of making order to implement the code. 341 LISTS, TABLES AND FORMS

Styling TextAIrntpicultes C SS chapter-14/styling-text-inputs.html This example demonstrates the CSS properties commonly used input { with text inputs, most of which font-size: 120%; you have already met. color: #5a5854; background-color: #f2f2f2; font-size sets the size of the border: 1px solid #bdbdbd; text entered by the user. border-radius: 5px; padding: 5px 5px 5px 30px; color sets the text color, and background-repeat: no-repeat; background-color sets the background-position: 8px 9px; background color of the input. display: block; margin-bottom: 10px;} border adds a border around input:focus { the edge of the input box, and background-color: #ffffff; border-radius can be used border: 1px solid #b1e1e4;} to create rounded corners (for input#email { browsers that support this background-image: url(\"images/email.png\");} property). input#twitter { background-image: url(\"images/twitter.png\");} The :focus pseudo-class is input#web { used to change the background background-image: url(\"images/web.png\");} color of the text input when it is being used, and the :hover R e s u lt psuedo-class applies the same styles when the user hovers over them. background-image adds a background image to the box. Because there is a different image for each input, we are using an attribute selector looking for the value of the id attribute on each input. You will learn more about background images and how to position them in Chapter 16. LISTS, TABLES AND FORMS 342

SAtrytlicinlge Submit Buttons Here are some properties that chapter-14/styling-submit-buttons.html C SS can be used to style submit buttons. This example builds input#submit { on the one in the previous page, color: #444444; and the submit button inherits text-shadow: 0px 1px 1px #ffffff; the styles set for the <input> border-bottom: 2px solid #b2b2b2; element on the last page. background-color: #b9e4e3; background: -webkit-gradient(linear, left top, color is used to change the left bottom, from(#beeae9), to(#a8cfce)); color of the text on the button. background: -moz-linear-gradient(top, #beeae9, #a8cfce); text-shadow can give a 3D background: look to the text in browsers that -o-linear-gradient(top, #beeae9, #a8cfce); support this property. background: -ms-linear-gradient(top, #beeae9, #a8cfce);} border-bottom has been used input#submit:hover { to make the bottom border of color: #333333; the button slightly thicker, which border: 1px solid #a4a4a4; gives it a more 3D feel. border-top: 2px solid #b2b2b2; background-color: #a0dbc4; background-color can make background: -webkit-gradient(linear, left top, the submit button stand out left bottom, from(#a8cfce), to(#beeae9)); from other items around it. background: (Creating a consistent style -moz-linear-gradient(top, #a8cfce, #beeae9); for all buttons helps users background: understand how they should -o-linear-gradient(top, #a8cfce, #beeae9); interact with the site.) A gradient background: background has been added for -ms-linear-gradient(top, #a8cfce, #beeae9);} browsers that support gradients. Gradients are covered on R e s u lt page 419. The :hover pseudo-class has been used to change the appearance of the button when the user hovers over it. In this case, the background changes, the text gets darker, and the thicker border is applied to the top of the button. 343 LISTS, TABLES AND FORMS


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook