繁体   English   中英

如何实现类似于http://thisiskiosk.com/的可滚动圆形文本效果

[英]How can I achieve a scrollable circular text effect similar to http://thisiskiosk.com/

如果您在此处查看KIOSK网站,他们会在javascript中使用“ WE ARE OPEN”循环类型(我知道该怎么做),但我不知道是如何在滚动时实现这一点。例如,文本如何移动当上下滚动时,如何在HTML / CSS / JS中获得它?

这里查看我处理过的代码https://codepen.io/noel_emmanuel/pen/WJxRZW

HTML:

<!--just a container used to position in the page-->
<div class="container">
  <!--the holders/targets for the text, reuse as desired-->
  <div class="circTxt" id="test"></div>
</div>

<!--I told you it was simple! :)-->

CSS:

body {
  background: #111;
}

.container {
  /*centers in the container*/
  text-align: center;
}

div.circTxt {
  /*allows for centering*/
  display: inline-block;
  /*adjust as needed*/
  margin-bottom: 128px;
  color: whitesmoke;
}

JS:

function circularText(txt, radius, classIndex) {
  txt = txt.split(""),
    classIndex = document.getElementsByClassName("circTxt")[classIndex];

  var deg = 360 / txt.length,
    origin = 0;

  txt.forEach((ea) => {
    ea = `<p style='height:${radius}px;position:absolute;transform:rotate(${origin}deg);transform-origin:0 100%'>${ea}</p>`;
    classIndex.innerHTML += ea;
    origin += deg;
  });
}

circularText("WE ARE OPEN", 100, 0);

公开征求意见。

您可以在滚动事件上旋转它。 只是简单地旋转div具体取决于您滚动到页面顶部的距离。

我在文本上添加了heightwidth ,并fixed了它的位置以查看效果。

 function circularText(txt, radius, classIndex) { txt = txt.split(""), classIndex = document.getElementsByClassName("circTxt")[classIndex]; var deg = 360 / txt.length, origin = 0; txt.forEach((ea) => { ea = `<p style='height:${radius}px;position:absolute;transform:rotate(${origin}deg);transform-origin:0 100%'>${ea}</p>`; classIndex.innerHTML += ea; origin += deg; }); } circularText("WE ARE OPEN", 100, 0); $(document).ready(function(){ $(window).scroll(function(e){ rotateText(); }); function rotateText(){ var scrolled = $(window).scrollTop(); $('div.circTxt').css('transform','rotate('+scrolled+'deg)'); } }); 
 body { background: #111; } .container { /*centers in the container*/ text-align: center; height: 4000px; } div.circTxt { /*allows for centering*/ display: inline-block; /*adjust as needed*/ margin-bottom: 128px; color: whitesmoke; position: fixed; height: 200px; width: 200px; transform-origin: 0% 59%; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <!--just a container used to position in the page--> <div class="container"> <!--the holders/targets for the text, reuse as desired--> <div class="circTxt" id="test"></div> </div> <!--I told you it was simple! :)--> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM