Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 3421
  • Last Modified:

Overflow hidden/visible Safari problem

I am using overflow:hidden to show and hide some content in a div. This works fine in IE6, IE7 and FF BUT in Safari it doesn't seem to work?

If I use inline CSS to test each state, both overflow:hidden and overflow:visible it works fine but when I try and do that dynamically with JavaScript it fails to work?

Any ideas would be great!?!

Here is my code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Overflow hidden</title>
 
<style type="text/css">
#special{width:900px; height:200px; background-color:#FFFFFF; border:1px dashed #999999;}
#special img{float:right; margin:10px 10px 20px; border:1px solid #666666; display:inline}
#show-all{width:900px;position:absolute;bottom:0;z-index:99;background-color: #F8F8F8;opacity: .5;filter: alpha(opacity=50);height:10px;}
#show-all2{width:900px;background-color: #CCCCCC;}
#show-all2 a{display:block; padding:2px; background-color:#0000FF; float:right;color:#FFFFFF;display:inline}
</style>
 
<script type="text/javascript">
function showhide(id){
if (document.getElementById){
obj = document.getElementById(id);
if (obj.style.overflow == "hidden"){
obj.style.overflow = "visible";
obj.style.height = "auto";
} else {
obj.style.overflow = "hidden";
obj.style.height = "200px";
}
}
}
</script>
 
</head>
 
<body>
 
<div id="special" style="overflow:hidden;">
<div id="show-all">&nbsp;</div>
<div id="show-all2"><a href="#" onclick="showhide('special'); return(false);">Show all</a><br style="clear:right" /></div>
<div style="padding:10px;">
<img src="images/service.jpg" alt="" /><br /><br />
<h1>Atom Bomb</h1>
<p>Aftermath of an atomic bomb explosion - The aftermath of an atom bomb dropped on Japan by the United States in 1945. <br />Category: Social Studies - America History<br />Film Name: The Fragile Balance<br />Key Words: atom bomb, World War II, Hiroshima, Nagasaki<br /></p>
<p>Copyrighted Material, AIMS Multimedia. </p>
<br />
</div>
<br />
<br style="clear:both" />
</div>
 
</body>
</html>

Open in new window

0
Eternal_Student
Asked:
Eternal_Student
  • 4
  • 3
1 Solution
 
Michel PlungjanIT ExpertCommented:
http://www.quirksmode.org/css/overflow.html

Safari cannot dynamically change overflow to auto or scroll. Bug solved in Safari 3.0b Windows.
0
 
Michel PlungjanIT ExpertCommented:
Here
<script type="text/javascript">
var shown=true;
function showhide(id){
var obj=document.getElementById(id);
obj.style.overflow = (shown)?"hidden":"visible";
obj.style.height   = (shown)?"200px":"auto";
shown=!shown;
}
</script>

Open in new window

0
 
Eternal_StudentAuthor Commented:
There is no fix for Safari then?
0
Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to Squarespace.com and use offer code ‘EXPERTS’ to get 10% off your first purchase.

 
Michel PlungjanIT ExpertCommented:
I just gave it to you.
The script I gave you should work on all browsers on all platforms
If you need it to save the state while navigating away and back, we need to add some code to the onLoad but otherwise it should work
Try it.
Michel
0
 
Eternal_StudentAuthor Commented:
I just tested on IE and FF and you need to click the link a couple of times before it works. I had this problem before but im not sure how I solved it now?
0
 
Michel PlungjanIT ExpertCommented:
Change shown=true to shown=false
My mistake
0
 
Eternal_StudentAuthor Commented:
Works like a treat, thank you.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now