CSS problem med Google chrome, safari & opera

Permalänk

CSS problem med Google chrome, safari & opera

Hejsan alla swecare, det är som så att jag håller på med en liten hemsida just nu och jag designade nyligen om layouten i css-filen till % istället för em's. Men då uppstod ett litet problem i Google Chrome, Safari och Opera (vilket jag tyckte var konstigt...) men ja i alla fall problemet är att ett av huvudelementen #footer diven inte lyder och blir 60% bred, kan detta ha att göra med child divarna som ligger inuti den? Dock har jag specifierat att varje barn-div ska vara 24% + 0.5%padding + 0.5%padding = 25% och 25%*4 = 100% och 100% = 60% eftersom att parent-elementet är så brett eller...? Skickar med lite bilder så får ni se hur problemet ser ut samt kod.

Safari, Google Chrome och Opera, problem problem..

Internet explorer och Firefox, fin fint!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Positioning - Testing</title> <link rel="stylesheet" type="text/css" href="positioning.css"/> <!--[if IE="IE"]> <link rel="stylesheet" type="text/css" href="positioning_ie.css"> <![endif]--> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> </head> <body> <div id="header"> <div id="logo"> aaa<br /> aaa<br /> aaa<br /> aaa<br /> </div> <div id="nav"> aaa<br /> aaa<br /> aaa<br /> aaa<br /> </div> </div> <div id="content"> a <br /> a <div id="slideshow"> </div> </div> <div id="second_navigation"> <div id="portfolio"> <img src="images/portfolio_logo.png" class="float_img" alt=""/> <h3 class="inside_menu_2">Portfolio</h3> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tincidunt nunc vel nisl lacinia dignissim cursus justo feugiat. </p> <a href="#"><img src="images/read_more_buttons.png" alt=""/></a> <br /> <br /> </div> <div id="our_promise"> <img src="images/our_promise_logo.png" class="float_img" alt=""/> <h3 class="inside_menu_2">Our promise</h3> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tincidunt nunc vel nisl lacinia dignissim cursus justo feugiat. </p> <a href="#"><img src="images/read_more_buttons.png" alt=""/></a> <br /> <br /> </div> <div id="knowledge"> <img src="images/knowledge_logo.png" class="float_img" alt=""/> <h3 class="inside_menu_2">Knowledge</h3> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tincidunt nunc vel nisl lacinia dignissim cursus justo feugiat. </p> <a href="#"><img src="images/read_more_buttons.png" alt=""/></a> <br /> <br /> </div> <div id="testimonials"> <img src="images/testimonials_logo.png" class="float_img" alt="" /> <h3 class="inside_menu_2">Testimonials</h3> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tincidunt nunc vel nisl lacinia dignissim cursus justo feugiat. </p> <a href="#"><img src="images/read_more_buttons.png" alt=""/></a> <br /> <br /> </div> </div> <div id="footer"> <div id="twitter"> <a href="#"><img src="images/twitter_thumbnail.png" alt=""/></a> </div> <div id="linkedin"> <a href="#"><img src="images/linkedin_thumbnail.png" alt=""/></a> </div> <div id="facebook"> <a href="#"><img src="images/facebook_thumbnail.png" alt=""/></a> </div> <div id="skype"> <a href="#"><img src="images/skype_thumbnail.png" alt=""/></a> </div> </div> </body> </html>

body { background:#000000; margin:0; padding:0; } #header { width:60%; margin-left:auto; margin-right:auto; } #logo { background:url('images/logo_section.png') repeat-x; width:25%; float:left; } #nav { background:url('images/header_gradient.png') repeat-x; width:75%; float:left; } #content { background-color:green; width:60%; margin-left:auto; margin-right:auto; } #slideshow { background-color:red; width:75%; margin:auto; } #second_navigation { background-color:red; width:60%; margin-left:auto; margin-right:auto; } .read_more_buttons { background:url('images/read_more_buttons.png'); } #portfolio { background-color:gray; width:24%; float:left; text-align:center; padding-right:0.5%; padding-left:0.5%; } #our_promise { background-color:gray; width:24%; float:left; text-align:center; padding-right:0.5%; padding-left:0.5%; } #knowledge { background-color:gray; width:24%; float:left; text-align:center; padding-right:0.5%; padding-left:0.5%; } #testimonials { background-color:gray; width:24%; float:left; text-align:center; padding-right:0.5%; padding-left:0.5%; } h3.inside_menu_2 { color:aqua; text-align:center; } img.float_img { padding-top:1em; width:3em; height:3em; } #footer { background-color:#cccccc; width:60%; margin-left:auto; margin-right:auto; overflow:hidden; } #twitter { float:right; padding-right:1.5%; padding-top:0.5%; } #facebook { float:right; padding-right:1.5%; padding-top:0.5%; } #linkedin { float:right; padding-right:1.5%; padding-top:0.5%; } #skype { float:right; padding-right:1.5%; padding-top:0.5%; }

Tack!

//Sandrerind

Permalänk
Inaktiv

Använd pixlar istället för procent. Webbläsarna avrundar olika, man kan ju inte rendera 164,33333 pixlar precis.

Permalänk
Skrivet av anon150287:

Använd pixlar istället för procent. Webbläsarna avrundar olika, man kan ju inte rendera 164,33333 pixlar precis.

Anledningen till att jag använde procent i detta fall var för att det skulle fungera lika fint i alla upplösningar.... Uppnår jag samma resultat om jag använder pixlar..?

Edit: Det finns inget sätt man kan instruera webbläsarna så att de avrundar lika..?

Permalänk
Inaktiv
Skrivet av Sandrerind:

Anledningen till att jag använde procent i detta fall var för att det skulle fungera lika fint i alla upplösningar.... Uppnår jag samma resultat om jag använder pixlar..?

Edit: Det finns inget sätt man kan instruera webbläsarna så att de avrundar lika..?

Nej, men oftast vill du inte det heller. Om du till exempel inte text skalar med upplösningen kommer det se konstigt ut.
Finns "inga" sidor i dagsläget som gör så.

Permalänk
Skrivet av anon150287:

Nej, men oftast vill du inte det heller. Om du till exempel inte text skalar med upplösningen kommer det se konstigt ut.
Finns "inga" sidor i dagsläget som gör så.

Så du tycker jag alltså ska gå helt över till pixlar och aldrig köra procent i huvudelementen? Vad är en normal bredd i pixlar att köra på :-)?

Permalänk
Medlem

Efter din body så bör du ha en div#page-wrapper som tex har width:70% sedan kan du ha allt i den som skall ha width 70% som width 100% inne i din wrapper

Skrivet av havsmonstret:

Nej, men oftast vill du inte det heller. Om du till exempel inte text skalar med upplösningen kommer det se konstigt ut.
Finns "inga" sidor i dagsläget som gör så.

Själv föredrar jag att undvika pixlar. Använder pixlar mest i borders och text. Em's storlek utgörs efter elementets textstorlek vilket gör att jag tycker det blir mycket enklare att ändra på objekt då man inte behöver ändra mer än tex textstorlek om jag vill ändra hela storleken på en knapp.

Visa signatur
Permalänk
Skrivet av chila:

Efter din body så bör du ha en div#page-wrapper som tex har width:70% sedan kan du ha allt i den som skall ha width 70% som width 100% inne i din wrapper

Använder mig utav det här nu, blir dock exakt samma problem. Diven #second_navigation blir för kort i jämförelse med #content och #header... Absolut ingen aning om varför heller...

Edit: Problemet verkar ligga i små divvarna som ligger inuti #second_navigation divven, testade att ta ur dem och nu fyller den 100% precis som den ska i chrome, opera och safari.. Antar att det kan vara bäst att radera ut olika delar av koden och på så sätt testa vad det är som orsakar det :)?

Permalänk
Medlem
Skrivet av Sandrerind:

Använder mig utav det här nu, blir dock exakt samma problem. Diven #second_navigation blir för kort i jämförelse med #content och #header... Absolut ingen aning om varför heller...

Edit: Problemet verkar ligga i små divvarna som ligger inuti #second_navigation divven, testade att ta ur dem och nu fyller den 100% precis som den ska i chrome, opera och safari.. Antar att det kan vara bäst att radera ut olika delar av koden och på så sätt testa vad det är som orsakar det :)?

Har kollat lite på din kod. Problemet upstår nog i att du har satt tex float:left; lite här och var men dom avslutas aldrig vilket förstör för den boxen som dom ligger i. #second-navigation får då i chrome (i mitt fall i alla fall) en höjd på 0px. Så dom grejerna som ligger i #second-navigation hamnar då på något sett utanför.

Visa signatur
Permalänk
Skrivet av chila:

Har kollat lite på din kod. Problemet upstår nog i att du har satt tex float:left; lite här och var men dom avslutas aldrig vilket förstör för den boxen som dom ligger i. #second-navigation får då i chrome (i mitt fall i alla fall) en höjd på 0px. Så dom grejerna som ligger i #second-navigation hamnar då på något sett utanför.

Hur menar du med att de aldrig avslutas :)? Har f.ö löst det, tog bort paddingen på 0.5% left/right och då vips blev allt bra, finns t.om avstånd kvar mellan de olika paragraferna trots att det inte finns någon specifierad padding! Fick dock ett nytt problem nu då, att en <ul> lista som ska ligga där <img src="read_more_buttons.png"> låg inte blir centrerad, beror det på att <ul> listor inte behandlas som vanlig text eller är det tok nu igen :(?

Permalänk
Medlem

Fixat...

Har löst problemet.

Kolla gärna igenom och gämför med ursprungliga så du ser vad jag ändrat.

Samtliga element som hade width 60% har nu ingen width alls då div som standard har 100% och dessa ligger nu i en wrapper på 60%

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Positioning - Testing</title> <link rel="stylesheet" type="text/css" href="positioning.css"/> <!--[if IE="IE"]> <link rel="stylesheet" type="text/css" href="positioning_ie.css"> <![endif]--> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> </head> <body> <div id="page-wrapper"> <div id="header"> <div id="logo"> aaa<br /> aaa<br /> aaa<br /> aaa<br /> </div> <div id="nav"> aaa<br /> aaa<br /> aaa<br /> aaa<br /> </div> <div class="clear-float"></div> </div> <div id="content"> a <br /> a <div id="slideshow"> </div> </div> <div id="second_navigation"> <div id="portfolio"> <img src="images/portfolio_logo.png" class="float_img" alt=""/> <h3 class="inside_menu_2">Portfolio</h3> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tincidunt nunc vel nisl lacinia dignissim cursus justo feugiat. </p> <a href="#"><img src="images/read_more_buttons.png" alt=""/></a> <br /> <br /> </div> <div id="our_promise"> <img src="images/our_promise_logo.png" class="float_img" alt=""/> <h3 class="inside_menu_2">Our promise</h3> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tincidunt nunc vel nisl lacinia dignissim cursus justo feugiat. </p> <a href="#"><img src="images/read_more_buttons.png" alt=""/></a> <br /> <br /> </div> <div id="knowledge"> <img src="images/knowledge_logo.png" class="float_img" alt=""/> <h3 class="inside_menu_2">Knowledge</h3> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tincidunt nunc vel nisl lacinia dignissim cursus justo feugiat. </p> <a href="#"><img src="images/read_more_buttons.png" alt=""/></a> <br /> <br /> </div> <div id="testimonials"> <img src="images/testimonials_logo.png" class="float_img" alt="" /> <h3 class="inside_menu_2">Testimonials</h3> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi tincidunt nunc vel nisl lacinia dignissim cursus justo feugiat. </p> <a href="#"><img src="images/read_more_buttons.png" alt=""/></a> <br /> <br /> </div> <div class="clear-float"></div> </div> <div id="footer"> <div id="twitter"> <a href="#"><img src="images/twitter_thumbnail.png" alt=""/></a> </div> <div id="linkedin"> <a href="#"><img src="images/linkedin_thumbnail.png" alt=""/></a> </div> <div id="facebook"> <a href="#"><img src="images/facebook_thumbnail.png" alt=""/></a> </div> <div id="skype"> <a href="#"><img src="images/skype_thumbnail.png" alt=""/></a> </div> <div class="clear-float"></div> </div> </div> </body> </html>

Dold text

CSS

body { background:#000; margin:0; padding:0; } #page-wrapper { width:60%; margin-left: auto; margin-right: auto; } #header { } #logo { background-image:url('images/logo_section.png') repeat-x; width:25%; float:left; } #nav { background-image:url('images/header_gradient.png') repeat-x; width:75%; float:right; } #content { background-color:green; } #slideshow { background-color:red; width:75%; margin:auto; } #second_navigation { background-color:gray; } .read_more_buttons { background:url('images/read_more_buttons.png'); } #portfolio { width:24%; float:left; text-align:center; padding-right:0.5%; padding-left:0.5%; } #our_promise { width:24%; float:left; text-align:center; padding-right:0.5%; padding-left:0.5%; } #knowledge { width:24%; float:left; text-align:center; padding-right:0.5%; padding-left:0.5%; } #testimonials { width:24%; float:left; text-align:center; padding-right:0.5%; padding-left:0.5%; } h3.inside_menu_2 { color:aqua; text-align:center; } img.float_img { padding-top:1em; width:3em; height:3em; } #footer { background-color:#cccccc; overflow:hidden; } #twitter { float:right; padding-right:1.5%; padding-top:0.5%; } #facebook { float:right; padding-right:1.5%; padding-top:0.5%; } #linkedin { float:right; padding-right:1.5%; padding-top:0.5%; } #skype { float:right; padding-right:1.5%; padding-top:0.5%; } /* ------ */ .clear-float{ clear:both; }

Dold text

Edit:-----
Ser att du precis löst det i kommentar ovan. Har tyvärr inte möjlighet att kolla så mycket på bilderna då jag inte själv har dom.
Kolla om bilderna beter sig som dom skall i koden ovan.

Visa signatur
Permalänk
Medlem

Div har som standard auto, vilket inte är det samma som 100%. Oftast är auto enklare att jobba med då paddingen blir en del av den tillgängliga bredden.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Div har som standard auto, vilket inte är det samma som 100%. Oftast är auto enklare att jobba med då paddingen blir en del av den tillgängliga bredden.

Man lär sig något nytt varje dag

Visa signatur
Permalänk
Skrivet av chila:

Bilderna beter sig som dom ska nästan, problemet med att du inte angett någon #header width gör ju att #logo och #nav kommer bli osynliga (vilket dem blev) men annars fungerade det som det skall! Något jag dock inte är så familiär med är clear:both; jag har inte riktigt förstått mig på hur den fungerar och när/hur man skall använda den..

Men tack för din lösning! Det är verkligen uppskattat med ett hjälpande forum

(<ul> problemet kvarstår, om det är någon som vill hjälpa till)

Permalänk
Medlem
Skrivet av Sandrerind:

Bilderna beter sig som dom ska nästan, problemet med att du inte angett någon #header width gör ju att #logo och #nav kommer bli osynliga (vilket dem blev) men annars fungerade det som det skall! Något jag dock inte är så familiär med är clear:both; jag har inte riktigt förstått mig på hur den fungerar och när/hur man skall använda den..

Men tack för din lösning! Det är verkligen uppskattat med ett hjälpande forum

(<ul> problemet kvarstår, om det är någon som vill hjälpa till)

clear: left|right|both används för att förhindra att floatade element ligger till höger|vänster|endera sida om det clearade elementet. Det ska nästan aldrig användas på det vis som chila gör — menar inte att basha dig men clearfix-element är oftast ett tecken på bristfällig design.

En bättre lösning är att exempelvis sätta overflow: hidden på det omslutande elementet, vilket leder till att det anpassar sig efter sitt flytande innehåll.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av Teknocide:

clear: left|right|both används för att förhindra att floatade element ligger till höger|vänster|endera sida om det clearade elementet. Det ska nästan aldrig användas på det vis som chila gör — menar inte att basha dig men clearfix-element är oftast ett tecken på bristfällig design.

En bättre lösning är att exempelvis sätta overflow: hidden på det omslutande elementet, vilket leder till att det anpassar sig efter sitt flytande innehåll.

Okej! Tack så mycket! Så användningen av overflow:hidden; i #footer diven är alltså en bättre lösning än att använda clear:both;? Och skall helst användas istället för clear?

Permalänk
Medlem
Skrivet av Teknocide:

clear: left|right|both används för att förhindra att floatade element ligger till höger|vänster|endera sida om det clearade elementet. Det ska nästan aldrig användas på det vis som chila gör — menar inte att basha dig men clearfix-element är oftast ett tecken på bristfällig design.

En bättre lösning är att exempelvis sätta overflow: hidden på det omslutande elementet, vilket leder till att det anpassar sig efter sitt flytande innehåll.

Ok. Håller mer på med bakomliggande kod, därav denna bristfälliga design. Men har själv tyckt att det är en något knäpp lösning (men visste ingen bättre) då jag själv uppskattar så mycket Css som möjligt och så lite Html som möjligt för att det blir lättare med server-kod/script i Viewsen. (Alltså så lite design som möjligt bland html-taggarna)

Visa signatur
Permalänk
Medlem
Skrivet av Sandrerind:

Okej! Tack så mycket! Så användningen av overflow:hidden; i #footer diven är alltså en bättre lösning än att använda clear:both;? Och skall helst användas istället för clear?

I detta fallet är det så. Den tomma clearfix-divens enda uppgift är att påverka layouten av sidan, vilket bryter mot tumregeln som säger att man så långt som möjligt ska styra presentation med CSS och "markera" innehållsdata med taggar.

clear är inget dåligt attribut i sig; om du behöver flyta två bilder till vänster men inte vill att de ska ligga bredvid varandra kan du använda clear: left; på den ena för att få dem att lägga sig under varandra, som exempel.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av anon150287:

Använd pixlar istället för procent. Webbläsarna avrundar olika, man kan ju inte rendera 164,33333 pixlar precis.

Ett bättre alternativ är att använda enheten em (eller rem), då de skalar med textstorlek och alltså gör sidan bredare om användaren har ökat (standard)textstorleken i sin webbläsare.

Permalänk
Skrivet av Teknocide:

clear är inget dåligt attribut i sig; om du behöver flyta två bilder till vänster men inte vill att de ska ligga bredvid varandra kan du använda clear: left; på den ena för att få dem att lägga sig under varandra, som exempel.

Okej, tack så mycket! Då har man lärt sig något nytt!!!

Permalänk
Inaktiv
Skrivet av You:

Ett bättre alternativ är att använda enheten em (eller rem), då de skalar med textstorlek och alltså gör sidan bredare om användaren har ökat (standard)textstorleken i sin webbläsare.

Ja det går ju självklart. Tänkte också på bilder som inte är lika enkla att skala. Om man har 80% på en meny med 5 knappar kanske det ser bra ut i 1280x720 men välidgt glest i 1920x1080.

Permalänk
Medlem

Em trodde jag var en självklarhet att använda, men tyckte inte det nämndes att overflow tillämpas om elementen på sidan inte får plats. Du skulle därför kunna sätta overflow auto på senare menyer för att de kan anpassas till att bli rullmenyer på ex små skärmar så som en iPhone som jag skriver på nu XD

Lycka till dock

Skickades från m.sweclockers.com