CSS3 & CSS var & :root

How to change CSS :root color variables in JavaScript

https://stackoverflow.com/questions/37801882/how-to-change-css-root-color-variables-in-javascript

https://developer.mozilla.org/en-US/docs/Web/CSS/:root

  1. :root {
  2. --angleBegin: 0deg;
  3. --angleEnd: 0deg;
  4. /* fixed angle enums */
  5. --angle0: 0deg;
  6. /* --angle30: 30deg; */
  7. --angle60: 60deg;
  8. /* --angle90: 90deg; */
  9. --angle120: 120deg;
  10. --angle180: 180deg;
  11. --angle240: 240deg;
  12. --angle300: 300deg;
  13. --angle360: 360deg;
  14. }

css change skin

  1. // --angleBegin = --angle0;
  2. // --angleBegin = --angle60;// and so on...
  3. document.documentElement.style.setProperty('--your-variable', '#YOURCOLOR');
  4. // css3 vars
  5. document.documentElement.style.setProperty("--angleBegin", "--angle60");

demo

https://codepen.io/xgqfrms/pen/rELraa

https://codepen.io/xgqfrms/pen/agZGZY

https://codepen.io/xgqfrms/pen/vqKWov


  1. :root {
  2. --angleBegin: 0deg;
  3. --angleEnd: 0deg;
  4. --angleDefault: 0deg;
  5. /* fixed angle enums */
  6. --angle0: 0deg;
  7. /* --angle30: 30deg; */
  8. --angle60: 60deg;
  9. /* --angle90: 90deg; */
  10. --angle120: 120deg;
  11. --angle180: 180deg;
  12. --angle240: 240deg;
  13. --angle300: 300deg;
  14. --angle360: 360deg;
  15. }
  16. section{
  17. margin: 100px auto;
  18. position: relative;
  19. }
  20. div#div {
  21. position: absolute;
  22. box-sizing: border-box;
  23. width: 100px;
  24. height: 100px;
  25. margin-top: 50px;
  26. margin-left: 200px;
  27. background-color:#ccc;
  28. border-top: 1px solid #f00;
  29. border-right: 1px solid #0f0;
  30. border-bottom: 1px solid #00f;
  31. border-left: 1px solid #f0f;
  32. /* transform: rotate(60deg); */
  33. /* transform: rotate(var(--angle0)); */
  34. /* transform: rotate(var(--angleEnd)); */
  35. transform: rotate(var(--angleDefault));
  36. transform-origin: 200px 200px;
  37. /* transform-origin: 50% 50%; */
  38. }
  39. div#bg {
  40. position: absolute;
  41. box-sizing: border-box;
  42. width: 100px;
  43. height: 100px;
  44. margin-top: 50px;
  45. margin-left: 200px;
  46. background-color:#ccc;
  47. border-top: 1px solid #f00;
  48. border-right: 1px solid #0f0;
  49. border-bottom: 1px solid #00f;
  50. border-left: 1px solid #f0f;
  51. transform: rotate(0deg);
  52. transform-origin: 200px 200px;
  53. }
  54. .circle{
  55. position: absolute;
  56. box-sizing: border-box;
  57. width: 400px;
  58. height: 400px;
  59. margin-top: 50px;
  60. margin-left: 200px;
  61. background-color: rgba(123, 123, 123, 0.5);
  62. border: 10px solid red;
  63. border-radius: 50%;
  64. }
  65. .rotateAngle {
  66. animation: autoRotateWithAngleVar 1s 1 both ease;
  67. }
  68. @keyframes autoRotateWithAngleVar {
  69. 0% {
  70. transform: rotate(var(--angleBegin));
  71. /* transform: rotate3D(0, 0, 1, var(--angleBegin)); */
  72. }
  73. to {
  74. transform: rotate(var(--angleEnd));
  75. /* transform: rotate3D(0, 0, 1, var(--angleEnd)); */
  76. }
  77. }
  1. <section>
  2. <div>
  3. <button data-btn="btn">click</button>
  4. </div>
  5. <div id="div" data-begin="0" data-end="0">六边形 Hexagon</div>
  6. <div id="bg">六边形 Hexagon</div>
  7. <div class="circle"></div>
  8. </section>
  1. let div = document.querySelector(`[id="div"]`);
  2. let btn = document.querySelector(`[data-btn="btn"]`);
  3. // const autoRotateWithAngles = (begin = 0, end = 0) => {
  4. // // document.documentElement.style.setProperty("--angleBegin", "--angle60");
  5. // // document.documentElement.style.setProperty("--angleEnd", "--angle60");
  6. // document.documentElement.style.setProperty("--angleBegin", `--angle${begin}`);
  7. // document.documentElement.style.setProperty("--angleEnd", `--angle${end}`);
  8. // // rotateAngle
  9. // div.classList.toggle(`rotateAngle`);
  10. // };
  11. const autoRotateWithAngles = (direct = "postive", angle = 0) => {
  12. let begin = parseInt(div.dataset.begin);
  13. let end = parseInt(div.dataset.end);
  14. // Math.abs();
  15. if (direct === "postive") {
  16. let beginAngle = begin + angle;
  17. let endAngle = end + angle;
  18. div.dataset.begin = beginAngle > 360 ? beginAngle % 360 : beginAngle;
  19. div.dataset.end = endAngle > 360 ? endAngle % 360 : endAngle;
  20. }
  21. if (direct === "center") {
  22. // do nothing
  23. }
  24. if (direct === "nagitive") {
  25. div.dataset.begin = begin - angle;
  26. div.dataset.end = end - angle;
  27. }
  28. document.documentElement.style.setProperty("--angleBegin", `var(--angle${(begin + angle) > 360 ? (begin + angle) % 360 : (begin + angle)})`);
  29. document.documentElement.style.setProperty("--angleEnd", `var(--angle${(end + angle) > 360 ? (end + angle) % 360 : (end + angle)})`);
  30. // rotateAngle
  31. // div.classList.toggle(`rotateAngle`);
  32. div.classList.remove(`rotateAngle`);
  33. setTimeout(() => {
  34. div.classList.add(`rotateAngle`);
  35. document.documentElement.style.setProperty("--angleDefault", `var(--angle${(begin + angle) % 360})`);
  36. // document.documentElement.style.setProperty("--angleDefault", `var(--angle${(end + angle) % 360})`);
  37. // document.documentElement.style.setProperty("--angleDefault", `--angle${end + angle}`);
  38. // document.documentElement.style.setProperty("--angleDefault", `var(--angle${(end + angle) > 360 ? (end + angle) % 360 : (end + angle)})`);
  39. }, 1000);
  40. };
  41. btn.addEventListener(`click`, () => {
  42. autoRotateWithAngles("postive", 60);
  43. });

CSS3 rotate angle & positive & negative

setAttribute(disabled, false); & .removeAttribute(disabled);


  1. <!DOCTYPE html>
  2. <html lang="zh-Hans">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <meta name="author" content="xgqfrms">
  8. <meta name="generator" content="VS code">
  9. <!-- <link rel="icon" type="image/x-icon" href="./favicon.ico" />
  10. <link rel="icon" type="image/png" href="./favicon.png" /> -->
  11. <title>CSS3 rotate angle & positive & negative</title>
  12. <!-- Hexagon -->
  13. <style>
  14. :root {
  15. --angleBegin: 0deg;
  16. --angleEnd: 0deg;
  17. --angleDefault: 0deg;
  18. /* fixed angle enums */
  19. --angle0: 0deg;
  20. --angle60: 60deg;
  21. --angle120: 120deg;
  22. --angle180: 180deg;
  23. --angle240: 240deg;
  24. --angle300: 300deg;
  25. --angle360: 360deg;
  26. }
  27. section{
  28. margin: 100px auto;
  29. position: relative;
  30. }
  31. div#div {
  32. position: absolute;
  33. box-sizing: border-box;
  34. width: 100px;
  35. height: 100px;
  36. margin-top: 50px;
  37. margin-left: 200px;
  38. background-color:#ccc;
  39. border-top: 1px solid #f00;
  40. border-right: 1px solid #0f0;
  41. border-bottom: 1px solid #00f;
  42. border-left: 1px solid #f0f;
  43. transform: rotate(var(--angleDefault));
  44. transform-origin: 200px 200px;
  45. }
  46. #div::before {
  47. content: "";
  48. width: 6px;
  49. height: 6px;
  50. position: absolute;
  51. left: 0px;
  52. top: -5px;
  53. border: 2px solid #FFF;
  54. border-radius: 50%;
  55. }
  56. #div::after {
  57. content: "";
  58. position: absolute;
  59. left: 50%;
  60. top: -19%;
  61. height: 30px;
  62. width: 30px;
  63. background-color: #00c991;
  64. border-radius: 50% 50% 0;
  65. transform: translate(-50%, -50%) rotate(45deg);
  66. }
  67. div#bg {
  68. position: absolute;
  69. box-sizing: border-box;
  70. width: 100px;
  71. height: 100px;
  72. margin-top: 50px;
  73. margin-left: 200px;
  74. background-color:#ccc;
  75. border-top: 1px solid #f00;
  76. border-right: 1px solid #0f0;
  77. border-bottom: 1px solid #00f;
  78. border-left: 1px solid #f0f;
  79. transform: rotate(0deg);
  80. transform-origin: 200px 200px;
  81. }
  82. .circle{
  83. position: absolute;
  84. box-sizing: border-box;
  85. width: 400px;
  86. height: 400px;
  87. margin-top: 50px;
  88. margin-left: 200px;
  89. background-color: rgba(123, 123, 123, 0.5);
  90. border: 10px solid red;
  91. border-radius: 50%;
  92. }
  93. .rotateAngle {
  94. animation: autoRotateWithAngleVar 1s 1 both ease;
  95. }
  96. @keyframes autoRotateWithAngleVar {
  97. 0% {
  98. transform: rotate(var(--angleBegin));
  99. }
  100. to {
  101. transform: rotate(var(--angleEnd));
  102. }
  103. }
  104. </style>
  105. </head>
  106. <body>
  107. <section>
  108. <div>
  109. <button data-btn="btn1">positive click</button>
  110. <button data-btn="btn2">negative click</button>
  111. </div>
  112. <div id="div" data-begin="0" data-end="0">六边形 Hexagon</div>
  113. <div id="bg">六边形 Hexagon</div>
  114. <div class="circle"></div>
  115. </section>
  116. <!-- js -->
  117. <script>
  118. let log = console.log;
  119. let div = document.querySelector(`[id="div"]`);
  120. let btn1 = document.querySelector(`[data-btn="btn1"]`);
  121. let btn2 = document.querySelector(`[data-btn="btn2"]`);
  122. const autoRotateWithAngles = (direct = "postive", angle = 0) => {
  123. let begin = parseInt(div.dataset.begin);
  124. let end = parseInt(div.dataset.end);
  125. if (direct === "postive") {
  126. let beginAngle = begin + angle;
  127. let endAngle = end + angle;
  128. div.dataset.begin = beginAngle > 360 ? beginAngle % 360 : beginAngle;
  129. div.dataset.end = endAngle > 360 ? endAngle % 360 : endAngle;
  130. //
  131. // document.documentElement.style.setProperty("--angleBegin", `var(--angle${(begin + angle) > 360 ? (begin + angle) % 360 : (begin + angle)})`);
  132. // document.documentElement.style.setProperty("--angleEnd", `var(--angle${(end + angle) > 360 ? (end + angle) % 360 : (end + angle)})`);
  133. // div.classList.remove(`rotateAngle`);
  134. // setTimeout(() => {
  135. // div.classList.add(`rotateAngle`);
  136. // document.documentElement.style.setProperty("--angleDefault", `var(--angle${(begin + angle) % 360})`);
  137. // }, 1000);
  138. document.documentElement.style.setProperty("--angleBegin", `var(--angle${beginAngle > 360 ? beginAngle % 360 : beginAngle})`);
  139. document.documentElement.style.setProperty("--angleEnd", `var(--angle${endAngle > 360 ? endAngle % 360 : endAngle})`);
  140. div.classList.remove(`rotateAngle`);
  141. setTimeout(() => {
  142. div.classList.add(`rotateAngle`);
  143. document.documentElement.style.setProperty("--angleDefault", `var(--angle${beginAngle % 360})`);
  144. }, 1000);
  145. }
  146. if (direct === "center") {
  147. // do nothing
  148. }
  149. if (direct === "nagitive") {
  150. let beginAngle = (begin - angle) < 0 ? 360 - Math.abs(begin - angle) : (begin - angle);
  151. let endAngle = (end - angle) < 0 ? 360 - Math.abs(end - angle) : (end - angle);
  152. // let beginAngle = Math.abs(begin - angle);
  153. // let endAngle = Math.abs(end - angle);
  154. log(`beginAngle =`, beginAngle);
  155. log(`endAngle =`, endAngle);
  156. div.dataset.begin = beginAngle > 360 ? (beginAngle % 360) : beginAngle;
  157. div.dataset.end = endAngle > 360 ? (endAngle % 360) : endAngle;
  158. log(`div.dataset.begin =`, div.dataset.begin);
  159. log(`div.dataset.end =`, div.dataset.end);
  160. //
  161. // document.documentElement.style.setProperty("--angleBegin", `var(--angle${(begin - angle) > 360 ? (begin - angle) % 360 : (begin - angle)})`);
  162. // document.documentElement.style.setProperty("--angleEnd", `var(--angle${(end - angle) > 360 ? (end - angle) % 360 : (end - angle)})`);
  163. // div.classList.remove(`rotateAngle`);
  164. // setTimeout(() => {
  165. // div.classList.add(`rotateAngle`);
  166. // document.documentElement.style.setProperty("--angleDefault", `var(--angle${(begin - angle) % 360})`);
  167. // }, 1000);
  168. document.documentElement.style.setProperty("--angleBegin", `var(--angle${beginAngle > 360 ? beginAngle % 360 : beginAngle})`);
  169. document.documentElement.style.setProperty("--angleEnd", `var(--angle${endAngle > 360 ? endAngle % 360 : endAngle})`);
  170. div.classList.remove(`rotateAngle`);
  171. setTimeout(() => {
  172. div.classList.add(`rotateAngle`);
  173. document.documentElement.style.setProperty("--angleDefault", `var(--angle${beginAngle % 360})`);
  174. }, 1000);
  175. }
  176. };
  177. btn1.addEventListener(`click`, () => {
  178. btn1.setAttribute(`disabled`, true);
  179. autoRotateWithAngles("postive", 60);
  180. // autoRotateWithAngles("postive", 120);
  181. setTimeout(() => {
  182. // btn.setAttribute(`disabled`, false);
  183. btn1.removeAttribute(`disabled`);
  184. }, 1000);
  185. });
  186. btn2.addEventListener(`click`, () => {
  187. btn2.setAttribute(`disabled`, true);
  188. autoRotateWithAngles("nagitive", 60);
  189. // autoRotateWithAngles("nagitive", 120);
  190. setTimeout(() => {
  191. // btn.setAttribute(`disabled`, false);
  192. btn2.removeAttribute(`disabled`);
  193. }, 1000);
  194. });
  195. </script>
  196. </body>
  197. </html>

demo

https://repl.it/@xgqfrms/autoLoopArray-with-direction

touch circle menu

html & :root


  1. let html = document.querySelector(`:root`);
  2. html.scrollHeight;
  3. html.innerText = html.innerText.split(' ').join('');

refs



xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


CSS3 & CSS var & :root的更多相关文章

  1. css var all in one & html & root & :root

    css var all in one number :root{ --num: 0; } html{ --num: 0; } let html = document.querySelector(`ht ...

  2. css var & auto width css triangle

    css var & auto width css triangle https://codepen.io/xgqfrms/pen/PooeEbd css var https://codepen ...

  3. [CSS3] CSS :target Selector

    The :target selector allows us to interact with a fragment identifier, or hash, in our URL from CSS. ...

  4. [CSS3] CSS Media Queries

    Using CSS media queries allows you to design responsive layout in your web apps and website. We will ...

  5. [CSS3] CSS Display Property: Block, Inline-Block, and Inline

    Understanding the most common CSS display types of block, inline-block, and inline will allow you to ...

  6. [CSS3] CSS Background Images

    Body with background image and gradient html { background: linear-gradient(#000, white) no-repeat; h ...

  7. CSS3/CSS之居中解析(水平+垂直居中、水平居中,垂直居中)

    首先,我们来看下垂直居中: (1).如果是单行文本,则可以设置的line-height的数值,让其等于父级元素的高度! <!DOCTYPE html> <html lang=&quo ...

  8. CSS3+CSS+HTML实现网页

    效果图: 代码实现: 样式部分style.css: *{ margin:; padding:; } body{ background-color: #673929; font-size: 16px; ...

  9. 基于js的网页换肤(不需要刷新整个页面,只需替换css文件)

    1. [代码][JS]代码    <HTML><HEAD><link ID="skin" rel="stylesheet" typ ...

随机推荐

  1. Hugo 博客中文指南(基础教程)

    1. 安装 Hugo 从 Hugo 项目主页下载 Releases 文件,解压 hugo.exe 文件到 C:\Windows\System32 目录下. 2. 创建站点 hugo new site ...

  2. nginx http模块开发入门

    导语 本文对nginx http模块开发需要掌握的一些关键点进行了提炼,同时以开发一个简单的日志模块进行讲解,让nginx的初学者也能看完之后做到心里有谱.本文只是一个用作入门的概述. 目录 背景 主 ...

  3. C# 实现语音聊天

    一.语音聊天说专业点就是即时语音,是一种基于网络的快速传递语音信息的技术,普遍应用于各类社交软件中,优势主要有以下几点: (1)时效性:视频直播会因为带宽问题有时出现延迟高的问题,而语音直播相对来说会 ...

  4. 404 GET /nbextensions/jupyter-js-widgets/extension.js

    数据科学交流群,群号:189158789,欢迎各位对数据科学感兴趣的小伙伴的加入! 解决办法: 首先要确定你安装和配置nbextensions时有没有加--user,如果当时没加这里就不用加,否则不一 ...

  5. 跨边界传输之反弹shell

    反弹shell     1.nc         正向连接             攻击机                 nc-vv 受害者ip 受害者port             受害者    ...

  6. 初入Java坑,然后又入产品坑

    之前工作了一年,从事Java相关工作,不小心深得领导器重,跑去演讲.写文档.与客户沟通等,最后应公司需要,转往产品坑,坑坑相连,何时逃坑. 最近一直在学习产品经理必备工具Axure,发现这真是一个神奇 ...

  7. k8s command & args

    命令和参数说明: command.args两项实现覆盖Dockerfile中ENTRYPOINT的功能,具体的command命令代替ENTRYPOINT的命令行,args代表集体的参数. 如果comm ...

  8. Aruba无线控制器常用操作

    初始配置 1.console到初始化的无线控制器上 Enter System name [Aruba7005]: Enter VLAN 1 interface IP address [172.16.0 ...

  9. JavaScript解构赋值

    JavaScript解构赋值 JavaScript解构赋值为我们提供了很多方便,但是用法比较多,本文就来梳理一下.总体来说,主要就两种地方使用解构赋值,一种是数组的解构赋值,另一种是对象的解构赋值.以 ...

  10. 如何使用命令将文件夹中的文件名(包括路径)写入到txt文件中

    在cmd中使用 cd /d 路径,进入当前文件夹中 使用 dir /s /b > 0.txt 如图: