web-dev-qa-db-ja.com

空のスペースのないCSS3マーキー効果

ここでのこの質問には答えがあり、マーキーの各反復の終わりに多くの空のスペースが残ります: CSS3マーキー効果

CSS3を使用して、このスペースを残さないスムーズな<Marquee></Marquee>効果を実現する方法はありますか?

私には、SOの青いタグに少し似ている小さな要素がたくさんあります。これらは、1つの連続した本文やテキストの壁ではなく、マーキーのコンテンツのみを埋めます。

6
Lolums

これがあなたができる方法のサンプルです、そしてあなたが遅延と持続時間を設定することによってあなたはテキスト間のスペースを制御します

.Marquee {
  background-color: #ddd;
  width: 500px;
  margin: 0 auto;
  overflow: hidden;
  white-space: nowrap;
}
.Marquee span {
  display: inline-block;
  font-size: 20px;
  position: relative;
  left: 100%;
  animation: Marquee 8s linear infinite;
}
.Marquee:hover span {
  animation-play-state: paused;
}

.Marquee span:nth-child(1) {
  animation-delay: 0s;
}
.Marquee span:nth-child(2) {
  animation-delay: 0.8s;
}
.Marquee span:nth-child(3) {
  animation-delay: 1.6s;
}
.Marquee span:nth-child(4) {
  animation-delay: 2.4s;
}
.Marquee span:nth-child(5) {
  animation-delay: 3.2s;
}

@keyframes Marquee {
  0%   { left: 100%; }
  100% { left: -100%; }
}
<p class="Marquee">
  <span>this is a</span>
  <span>simple Marquee</span>
  <span>using css</span>
  <span>only tech</span>
  <span>with a delay</span>
</p>
14
LGSon

マーキーが十分に大きい場合は、アニメーションの途中でコレクションの1つを交換できます。

これはCSSだけで得られる限りだと思います

.Marquee {
  width: 100%;
  height: 80px;
  margin: 0 auto;
  overflow: hidden;
  white-space: nowrap;
  border: 1px solid blue;
}
.Marquee-content {
  display: inline-block;
  margin-top: 5px;
  animation: Marquee 15s linear infinite;
}
.item-collection-1 {
  position: relative;
  left: 0%;
  animation: swap 15s linear infinite;
}
@keyframes swap {
  0%, 50% {
    left: 0%;
  }
  50.01%,
  100% {
    left: 100%;
  }
}
.Marquee-content:hover {
  animation-play-state: paused
}
.item1 {
  display: inline-block;
  height: 70px;
  width: 140px;
  background: cyan;
  vertical-align: top;
  margin-left: 15px;
}
.item2 {
  display: inline-block;
  height: 70px;
  width: 100px;
  background: Magenta;
  vertical-align: top;
  margin-left: 15px;
  line-height: 14px;
}
/* Transition */

@keyframes Marquee {
  0% {
    transform: translateX(0)
  }
  100% {
    transform: translateX(-100%)
  }
}
<div class="Marquee">
  <div class="Marquee-content">
    <span class="item-collection-1">
      <span><img src="https://cdn.sstatic.net/Sites/stackoverflow/img/[email protected]" height="80"></span>
    <span class="item1"></span>
     <span><img src="https://cdn.sstatic.net/Sites/stackoverflow/img/[email protected]" height="80"></span>
    <span class="item1"></span>
    <span class="item1"></span>
    <span class="item1"></span>
    <span class="item1"></span>
    </span>
    <span class="item-collection-2">
      <span class="item2"></span>
    <span class="item2"></span>
    <span class="item2"></span>
    <span class="item2"></span>
    <span class="item2"></span>
    <span class="item2"></span>
    <span class="item2"></span>
    <span class="item2"></span>
    </span>
  </div>
  <div>
1
Waruna Manjula