Auto scrolling with CSS

前端 未结 4 1301
死守一世寂寞
死守一世寂寞 2020-12-15 12:52

In my website [based on wordpress] , I have a project slider (technically image with some text) . But that slider is not auto scrolling , there is a button for sliding left

相关标签:
4条回答
  • 2020-12-15 13:18

    You can't be able to do much animation with css. JavaScript is the way to go. I'm also trying to get the hang of it... Goodluck to you.

    0 讨论(0)
  • 2020-12-15 13:27

    Here is an example for auto scroll in both limited and unlimited element width:

    /*use this js if your element width is unlimited an you want to scroll in a 
    constant speed. else, you dont need this js code*/
    var elemWidth = document.getElementById('scroll-element').offsetWidth;
    var time = elemWidth/80; /* 80 = scrolling speed (44px/s)*/
    document.getElementById('scroll-element').style.cssText = "animation: scroll "+time+"s linear infinite;"
    .scroll-box{
        white-space: nowrap;
        font-size: 1.1em;
        overflow: hidden;
        padding: 20px 0;
        background-color: green;
    }
    .scroll-container{
      width: fit-content;
      direction: rtl; /*if you want to scroll left to right set dir to ltr */
    }
    #scroll-element{
      background-color: yellow;
      padding: 10px;
    }
    
    @-webkit-keyframes scroll{
      0% {
        margin-right: 0%; /*if you want to scroll left to right set margin-left*/
        
      }
      100%{
        margin-right: 100%;/*if you want to scroll left to right set margin-left*/
      }
    }
    <!DOCTYPE html>
        <html lang="en">
        <head>
        	<meta charset="utf-8">
        	<title>HTML</title>
        	<link rel="stylesheet" href="main2.css" type="text/css" />
        </head>
        <body>
          <div class="scroll-box">
           <div class="scroll-container">
            <span id="scroll-element">
              Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
            </span>
           </div>
          </div>
        </body>
        </html>

    0 讨论(0)
  • 2020-12-15 13:42

    1.) You can't initiate DOM actions with CSS or pure HTML. You always need a manipulating language (like JavaScript)

    2.) You can remove the buttons by overwriting the current CSS and adjust the visibility or display tag to render them away or (placeholding) invisible.

    In the end you really need JavaScript for this to trigger dynamic hiding and to make the automatic slide happen with setIntervals.

    Edit:

    This might be something for you to work with animating the slider:

    #container {
        	height: 200px;
        	width: 800px;
        	border: 1px solid #333;
        	overflow: hidden;
        	margin: 25px auto;
        }
        
        #box {
        	background: orange;
        	height: 180px;
        	width: 400px;
        	margin: 10px -400px;
        	-webkit-animation-name: move;
        	-webkit-animation-duration: 4s;
        	-webkit-animation-iteration-count: infinite;
        	-webkit-animation-direction: right;
        	-webkit-animation-timing-function: linear;
        }
        
        #box:hover {
        	-webkit-animation-play-state: paused;
        }
        
        @-webkit-keyframes move {
        	0% {
        		margin-left: -400px;
        	}
        	100% {
        		margin-left: 800px;
        	}
        }
        <!DOCTYPE html>
        <html lang="en">
        <head>
        	<meta charset="utf-8">
        	<title>HTML</title>
        	<link rel="stylesheet" href="main2.css" type="text/css" />
        </head>
        <body>
        	<div id="container">
        		<div id="box">as</div>
        	</div>
        </body>
        </html>

    Result

    This is the WebKit-only version. These are the equivalents for other browsers:

    The @ keyframes:

    @-moz-keyframes move {
    @-o-keyframes move {
    @keyframes move {
    

    Inside #box (only one property shown as example):

    -moz-animation-name: move;
    -o-animation-name: move;
    animation-name: move;
    
    0 讨论(0)
  • 2020-12-15 13:43

    Here is an example (Fiddle) of using animations. You could apply this to your .post-list:

    .post-list {
        animation: slide infinite 3s alternate;
    }
    
    @keyframes slide {
      0% {
        margin-left: 0px;
      }
      50% {
        margin-left: -100px;
      }
      100% {
        margin-left: -200px;
      }
    }
    

    To disable the animation on hover, use:

    .post-list:hover {
        animation-play-state: paused;
    }
    

    Don't forget the vendor prefixes (-webkit-... and so on) like in Allendars answer.

    But of course you'll have to play around. This should just be a hint of how it could work.

    0 讨论(0)
提交回复
热议问题