Results 1 to 4 of 4

Thread: Book Flip Slideshow - how to center

  1. #1
    Join Date
    May 2011
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Book Flip Slideshow - how to center

    1) Script Title: Book Flip Slide Show

    2) Script URL (on DD): http://www.dynamicdrive.com/dynamicindex14/bookflip.htm

    3) Describe problem:

    I'm trying to center the script on the page and have tried, simple HTML center and p align center etc, and using CSS methods.

    Everything else centers but not the script.

    Any help would be appreciated.

    thanks

  2. #2
    Join Date
    Sep 2007
    Location
    The Netherlands
    Posts
    1,881
    Thanks
    49
    Thanked 266 Times in 258 Posts
    Blog Entries
    56

    Default

    Below the script, you'll find:
    Code:
    <div id="Book" style="position:relative;">
    <img src="placeholder.gif" width="144" height="227">
    </div>
    Replace this with:
    Code:
    <div id="Book" style="position:absolute; left:50%; top:50%; margin-left:-144px; margin-top:-113px">
    <img src="placeholder.gif" width="144" height="227" >
    </div>
    Arie Molendijk.

  3. #3
    Join Date
    Mar 2005
    Location
    SE PA USA
    Posts
    30,495
    Thanks
    82
    Thanked 3,449 Times in 3,410 Posts
    Blog Entries
    12

    Default

    That will sort of work, assuming there's nothing else positioned that has a higher z-index that will cover the slideshow. It will also take the book flip out of the flow of the page potentially covering other stuff. Oh and using 'center' of any type in HTML or CSS is not the way to center anything other than text. It can be used for other things sometimes, but is prone to failure for various reasons.

    Now this might not work on your page, it could conflict with the page's existing layout. It will center the slideshow within its container. If there are problems like that, to really help you with this, we would need a link to the page or it's complete source code. A link would be best.

    That said, it would be better to do:

    Code:
    	<div id="Book" style="position:relative; width: 284px; height: 227px; margin: 0 auto;">
    	</div>
    Important things with this approach:

    • No transparent placeholder is required since we are now creating the required layout space via the division's dimensions.

    • Those dimensions are as instructed by the script. Width is 2 times the Book_Image_Width + 4. Height is the Book_Image_Height + 2.

    • Requires a standards invoking DOCTYPE to work in IE.


    Demo:

    http://home.comcast.net/~jscheuer1/s...p_centered.htm

    Notes: Incidentally the demo page on Dynamic Drive doesn't follow the script's recommendations for the width dimension. But that doesn't matter because the Dynamic Drive demo page has nothing to the right of the book flip.

    The script can go in the head of the page, only the markup needs to be in the body.

    Demo code:

    Code:
    <!DOCTYPE html>
    <html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript">
    
    /***********************************************
    * Book Flip slideshow script- (c) Ger Versluis 2003
    * Permission granted to DynamicDrive.com to feature script
    * This notice must stay intact for use
    * Visit http://www.dynamicdrive.com/ for full source code
    ***********************************************/
    
    /********************************************************
    	Create a div with transparent place holder in your html	
    	<div id="Book" style="position:relative">
    		<img src="placeholder.gif" width="144" height="227">
    	</div>
    	width = 2*book image width +4 height = book image height+2
    
    	Insert onload in body tag
    		<body onload="ImageBook()">	
    *********************************************************/
    
    // 7 variables to control behavior
    	var Book_Image_Width=140;
    	var Book_Image_Height=225;
    	var Book_Border=true;
    	var Book_Border_Color="gray";
    	var Book_Speed=15;
    	var Book_NextPage_Delay=1500; //1 second=1000
    	var Book_Vertical_Turn=0;	
    
    // array to specify images and optional links. At least 4
    // If Link is not needed keep it ""
    
    	Book_Image_Sources=new Array(
    		"photo1.jpg","http://www.dynamicdrive.com",
    		"photo2.jpg","http://www.javascriptkit.com",
    		"photo3.jpg","", //this slide isn't linked
    		"photo4.jpg","http://www.codingforums.com" // NOTE No comma after last line
    		);
    
    /***************** DO NOT EDIT BELOW **********************************/
    	var B_LI,B_MI,B_RI,B_TI,B_Angle=0,B_CrImg=6,B_MaxW,B_Direction=1;
    	var B_MSz,B_Stppd=false;B_Pre_Img=new Array(Book_Image_Sources.length);
    
    	function ImageBook(){
    		if(document.getElementById){
    			for(i=0;i<Book_Image_Sources.length;i+=2){
    				B_Pre_Img[i]=new Image();B_Pre_Img[i].src=Book_Image_Sources[i]}
    			Book_Div=document.getElementById("Book");
    			B_LI=document.createElement("img");Book_Div.appendChild(B_LI);	
    			B_RI=document.createElement("img");Book_Div.appendChild(B_RI);
    			B_MI=document.createElement("img");Book_Div.appendChild(B_MI);	
    			B_LI.style.position=B_MI.style.position=B_RI.style.position="absolute";
    			B_LI.style.zIndex=B_RI.style.zIndex=0;B_MI.style.zIndex=1;
    			B_LI.style.top=(Book_Vertical_Turn?Book_Image_Height+1:0)+"px";
    			B_LI.style.left=0+"px";
    			B_MI.style.top=0+"px";
    			B_MI.style.left=(Book_Vertical_Turn?0:Book_Image_Width+1)+"px";
    			B_RI.style.top=0+"px";
    			B_RI.style.left=(Book_Vertical_Turn?0:Book_Image_Width+1)+"px";
    			B_LI.style.height=Book_Image_Height+"px";
    			B_MI.style.height=Book_Image_Height+"px";
    			B_RI.style.height=Book_Image_Height+"px";
    			B_LI.style.width=Book_Image_Width+"px";
    			B_MI.style.width=Book_Image_Width+"px";
    			B_RI.style.width=Book_Image_Width+"px";
    			if(Book_Border){
    				B_LI.style.borderStyle=B_MI.style.borderStyle=B_RI.style.borderStyle="solid";
    				B_LI.style.borderWidth=1+"px";
    				B_MI.style.borderWidth=1+"px";
    				B_RI.style.borderWidth=1+"px";
    				B_LI.style.borderColor=B_MI.style.borderColor=B_RI.style.borderColor=Book_Border_Color}
    			B_LI.src=B_Pre_Img[0].src;
    			B_LI.lnk=Book_Image_Sources[1];
    			B_MI.src=B_Pre_Img[2].src;
    			B_MI.lnk=Book_Image_Sources[3];
    			B_RI.src=B_Pre_Img[4].src;
    			B_RI.lnk=Book_Image_Sources[5];
    			B_LI.onclick=B_MI.onclick=B_RI.onclick=B_LdLnk;
    			B_LI.onmouseover=B_MI.onmouseover=B_RI.onmouseover=B_Stp;
    			B_LI.onmouseout=B_MI.onmouseout=B_RI.onmouseout=B_Rstrt;
    			BookImages()}}
    
    	function BookImages(){
    		if(!B_Stppd){
    			if(Book_Vertical_Turn){
    				B_MSz=Math.abs(Math.round(Math.cos(B_Angle)*Book_Image_Height));
    				MidOffset=!B_Direction?Book_Image_Height+1:Book_Image_Height-B_MSz;
    				B_MI.style.top=MidOffset+"px";
    				B_MI.style.height=B_MSz+"px"}
    			else{	B_MSz=Math.abs(Math.round(Math.cos(B_Angle)*Book_Image_Width));
    				MidOffset=B_Direction?Book_Image_Width+1:Book_Image_Width-B_MSz;
    				B_MI.style.left=MidOffset+"px";
    				B_MI.style.width=B_MSz+"px"}
    			B_Angle+=Book_Speed/720*Math.PI;
    			if(B_Angle>=Math.PI/2&&B_Direction){
    				B_Direction=0;
    				if(B_CrImg==Book_Image_Sources.length)B_CrImg=0;
    				B_MI.src=B_Pre_Img[B_CrImg].src;
    				B_MI.lnk=Book_Image_Sources[B_CrImg+1];
    				B_CrImg+=2}
    			if(B_Angle>=Math.PI){
    				B_Direction=1;
    				B_TI=B_LI;
    				B_LI=B_MI;
    				B_MI=B_TI;
    				if(Book_Vertical_Turn)B_MI.style.top=0+"px";
    				else B_MI.style.left=Book_Image_Width+1+"px";			
    				B_MI.src=B_RI.src;
    				B_MI.lnk=B_RI.lnk;
    
    				setTimeout("Book_Next_Delay()",Book_NextPage_Delay)}
    			else setTimeout("BookImages()",50)}
    		else setTimeout("BookImages()",50)}
    
    	function Book_Next_Delay(){
    			if(B_CrImg==Book_Image_Sources.length)B_CrImg=0;
    			B_RI.src=B_Pre_Img[B_CrImg].src;
    			B_RI.lnk=Book_Image_Sources[B_CrImg+1];
    			B_MI.style.zIndex=2;
    			B_LI.style.zIndex=1;
    			B_Angle=0;
    			B_CrImg+=2;
    		setTimeout("BookImages()",50)}
    
    	function B_LdLnk(){if(this.lnk)window.location.href=this.lnk}
    	function B_Stp(){B_Stppd=true;this.style.cursor=this.lnk?"pointer":"default"}
    	function B_Rstrt(){B_Stppd=false}
    </script>
    </head>
    <body onload="ImageBook();">
    	<div id="Book" style="position:relative; width: 284px; height: 227px; margin: 0 auto;">
    	</div>
    </body>
    </html>
    Last edited by jscheuer1; 05-12-2011 at 04:00 AM. Reason: add detail
    - John
    ________________________

    Show Additional Thanks: International Rescue Committee - Donate or: The Ocean Conservancy - Donate or: PayPal - Donate

  4. #4
    Join Date
    Sep 2007
    Location
    The Netherlands
    Posts
    1,881
    Thanks
    49
    Thanked 266 Times in 258 Posts
    Blog Entries
    56

    Default

    Quote Originally Posted by jscheuer1 View Post
    That will sort of work, assuming there's nothing else positioned that has a higher z-index that will cover the slideshow. It will also take the book flip out of the flow of the page potentially covering other stuff.
    That crossed my mind when I posted my solution. I was waiting for the person's reaction to know what he/she really wanted.
    By the way, why don't you just put:
    position:relative; width:284px;height:227px; margin:auto
    without the '0' for margin?
    ===
    Arie.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •