From fd094d6368c7d9e2dc79f0458c53035412f91577 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Fri, 17 Jun 2022 17:49:57 +0000 Subject: [PATCH 01/43] Initial gh-pages commit From 0ac28323fa2984cfab3dbd153b297d88bb69c385 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Fri, 17 Jun 2022 17:49:57 +0000 Subject: [PATCH 02/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@59eb1b6301ee5eab42580e4577088ca30?= =?UTF-8?q?ed87753=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +++ assets/images/chrome-min-fontsize.jpg | Bin 0 -> 168871 bytes tabbar/README.md | 32 +++++++++++ tabbar/index.html | 33 +++++++++++ tabbar/index.js | 39 +++++++++++++ tabbar/style.css | 79 ++++++++++++++++++++++++++ 6 files changed, 190 insertions(+) create mode 100644 README.md create mode 100644 assets/images/chrome-min-fontsize.jpg create mode 100644 tabbar/README.md create mode 100644 tabbar/index.html create mode 100644 tabbar/index.js create mode 100644 tabbar/style.css diff --git a/README.md b/README.md new file mode 100644 index 0000000..7988216 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# html_css_javascript +> 使用生动实用的例子, 抛离框架, 适合刚入门的开发者练习。 + +## List +| 名称 | Live Demo | +| ---- | ---- | +| tabbar | Link | \ No newline at end of file diff --git a/assets/images/chrome-min-fontsize.jpg b/assets/images/chrome-min-fontsize.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4048747b0dbad89d89fbb796482a48bcf1b6323d GIT binary patch literal 168871 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 z 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 em|2JZuuON+!`M0^ujFCt8XHwk8I# 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 literal 0 HcmV?d00001 diff --git a/tabbar/README.md b/tabbar/README.md new file mode 100644 index 0000000..2517e39 --- /dev/null +++ b/tabbar/README.md @@ -0,0 +1,32 @@ + +# tabbar + +设计稿: [Link](https://js.design/f/S2XzD5?p=S8rT46MRiL) + +# keypoints +## css +1. 去掉li标签默认的圆点样式: list-style-type: none; 或者设置简写属性 list-style: none. [More](https://developer.mozilla.org/zh-CN/docs/Web/CSS/list-style); + +2. flex水平、垂直居中, 实际项目中用到最多的居中方式之一: +```css +.demo { + display: flex; + align-items: center; + justify-content: center; +} + +``` + +3. cursor设置光标类型。当元素可交互,如元素可以点击,通常设置`cursor: pointer`, 光标会变成一个小手图标;另一个常用的情景是,当元素(如button)设置了disabled属性而变得不可点击时,通常要设置`cursor: not-allowed`, 光标会变成禁用的图标。这样可以更好的告知用户,按钮此刻不可点击。[More](https://developer.mozilla.org/zh-CN/docs/Web/CSS/cursor); + +4. font-size小于12px时,在chrome浏览器中表现仍未12px。 我们在使用chrome调试, 尤其时移动端应用时,会遇到字体小于12px的情景,但是这是在chrome中的表现仍是12px, 并不是设置的大小。这是因为chrome的默认最小字号是12px。我们只需要如下操作就可以显示任意字号: +chrome设置 --> 外观 --> 自定义字体 --> 最小字号一栏拖到最左 即可。 +
+

+ +
+
+ +## javascript +1. [事件冒泡和捕获](https://zh.javascript.info/bubbling-and-capturing) +2. [事件委托](https://zh.javascript.info/event-delegations) diff --git a/tabbar/index.html b/tabbar/index.html new file mode 100644 index 0000000..de9f098 --- /dev/null +++ b/tabbar/index.html @@ -0,0 +1,33 @@ + + + + + + + tabbar + + + + +
+
+
  • + +

    首页

    +
  • +
  • + +

    商城

    +
  • +
  • + +

    会员

    +
  • +
  • + +

    我的

    +
  • +
    + + + \ No newline at end of file diff --git a/tabbar/index.js b/tabbar/index.js new file mode 100644 index 0000000..239fcf1 --- /dev/null +++ b/tabbar/index.js @@ -0,0 +1,39 @@ +const parentNode = document.querySelector('.tabbar'); +const activeTop = document.querySelector('.active-top'); +// 去除顶部active-top +const childList = [...parentNode.children].slice(1); + +// 利用元素冒泡,使用事件委托绑定事件 +parentNode.addEventListener('click', function(event) { + let currentItem = null; + const target = event.target; + // tips: 或者使用event.target.closest(selector)获取最近父节点 + // const parentNode = event.target.closest('li'); + const parentNode = event.target.parentNode; + + // 鼠标点击的可能是li, 或者是其子元素i,p, 需要区分 + // 我们需要获取的是li元素,所以当点击的是i, p,要获取其父元素 + if (target.className.includes('tab-item')) { + currentItem = target; + } else if (parentNode.className.includes('tab-item')) { + currentItem = parentNode; + } + + + // 当前点击元素的索引 + const currentItemIndex = childList.indexOf(currentItem); + // 添加active类, 其他兄弟元素移除active + currentItem.classList.add('active'); + childList.forEach((item, index) => { + if (index !== currentItemIndex) { + item.classList.remove('active') + } + }); + // 操作active-top,移动到当前元素上 + if (!activeTop.style.top && !activeTop.style.display) { + activeTop.style.display = 'block'; + activeTop.style.top = '-6px' + } + const gap = currentItemIndex ? 23 : 22; + activeTop.style.left = (currentItemIndex * currentItem.offsetWidth + currentItem.offsetWidth * (currentItemIndex + 1)) / 2 - gap + 'px'; +}); \ No newline at end of file diff --git a/tabbar/style.css b/tabbar/style.css new file mode 100644 index 0000000..ba6730a --- /dev/null +++ b/tabbar/style.css @@ -0,0 +1,79 @@ +* { + margin: 0; +} + +body { + height: 100vh; + display: flex; + align-items: center; + justify-content: center; + background: linear-gradient(180deg, rgb(224, 195, 252) 0%, rgba(142, 197, 252, 1) 100%); +} +li { + list-style-type: none; +} +.tabbar { + width: 375px; + height: 64px; + border-radius: 12px; + background-color: #fff; + display: flex; + position: relative; +} +.tab-item { + height: 100%; + flex: 1; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + font-size: 22px; + color: #A6A6A6; + position: relative; + z-index: 1; + cursor: pointer; +} + +.tab-item i { + position: relative; +} +.tab-item p { + font-size: 8px; +} +.tab-item, +.tab-item.active p, +.tab-item.active i { + transition: all .2s ease; +} +.tab-item.active { + color: #000; +} +.tab-item.active i { + transform: translateY(-10px); +} +.tab-item.active p { + margin-top: 3px; + transform: translateY(-10px); +} +.tab-item.active i::after { + content: ''; + width: 28px; + height: 28px; + border-radius: 50%; + background: linear-gradient(136.17deg, rgba(255, 213, 0, 1) 8.17%, rgba(255, 183, 0, 1) 94.06%); + display: inline-block; + position: absolute; + top: -3px; + left: -3px; + z-index: -1; +} + +.active-top { + width: 44px; + height: 44px; + border-radius: 50%; + background-color: #fff; + position: absolute; + transition: left .2s ease-in-out; + pointer-events: none; +} \ No newline at end of file From 729af310250e3defb2ac60d8ebf6337a615a9aff Mon Sep 17 00:00:00 2001 From: Ciro Lee Date: Sat, 18 Jun 2022 01:52:56 +0800 Subject: [PATCH 03/43] Set theme jekyll-theme-cayman --- _config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 _config.yml diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..c419263 --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-cayman \ No newline at end of file From 6a4c79d777f730ba3374e2d04a6f58fbd536c1ee Mon Sep 17 00:00:00 2001 From: CiroLee Date: Fri, 17 Jun 2022 17:58:13 +0000 Subject: [PATCH 04/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@e8a720d78f0a79c3d8bf45b254125d0e0?= =?UTF-8?q?5e7e99c=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 ++++++---- _config.yml | 1 - 2 files changed, 6 insertions(+), 5 deletions(-) delete mode 100644 _config.yml diff --git a/README.md b/README.md index 7988216..1c528c6 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ # html_css_javascript + > 使用生动实用的例子, 抛离框架, 适合刚入门的开发者练习。 -## List -| 名称 | Live Demo | -| ---- | ---- | -| tabbar | Link | \ No newline at end of file +## List + +| 名称 | Live Demo | +| ------ | ------------------------------------------------------------- | +| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | \ No newline at end of file diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c419263..0000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-cayman \ No newline at end of file From 27b2451c7099016500fce919ac555831ae56124e Mon Sep 17 00:00:00 2001 From: Ciro Lee Date: Sat, 18 Jun 2022 02:00:14 +0800 Subject: [PATCH 05/43] Set theme jekyll-theme-cayman --- _config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 _config.yml diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..c419263 --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-cayman \ No newline at end of file From cbe81414567838eeee995839d7fc9a29041b992b Mon Sep 17 00:00:00 2001 From: CiroLee Date: Sat, 18 Jun 2022 15:11:32 +0000 Subject: [PATCH 06/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@7f50b16c3069d8813d5c18c932a92a797?= =?UTF-8?q?09d877f=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++--- _config.yml | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 _config.yml diff --git a/README.md b/README.md index 1c528c6..a7e6213 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,6 @@ ## List -| 名称 | Live Demo | -| ------ | ------------------------------------------------------------- | -| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | \ No newline at end of file +| 名称 | Live Demo | Notes | +| ------ | ------------------------------------------------------------- | ------------ | +| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](./tabbar/README.md) | \ No newline at end of file diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c419263..0000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-cayman \ No newline at end of file From 4a055352fd5fd713cec3ce983dbac58f5ce36eb3 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Sat, 18 Jun 2022 15:18:12 +0000 Subject: [PATCH 07/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@5bf7e4c245737dcca5eafe71707700529?= =?UTF-8?q?4b51f61=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a7e6213..7f801ce 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,4 @@ | 名称 | Live Demo | Notes | | ------ | ------------------------------------------------------------- | ------------ | -| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](./tabbar/README.md) | \ No newline at end of file +| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | \ No newline at end of file From f134b9df4c9fe09e435500b264a91524e086c086 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Wed, 22 Jun 2022 18:59:29 +0000 Subject: [PATCH 08/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@510c7c79723e97500483fbad7e711505f?= =?UTF-8?q?8099992=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + README.md | 7 +- assets/images/border-image-slice.png | Bin 0 -> 9859 bytes coupons/README.md | 24 ++ coupons/img/Mcdonalds-icon.svg | 3 + coupons/img/cus-dashed-hori.svg | 3 + coupons/img/cus-dashed.svg | 3 + coupons/img/iphone-statusbar.svg | 7 + coupons/img/kfc-icon.svg | 10 + coupons/img/qrcode.png | Bin 0 -> 2789 bytes coupons/img/starbucks-icon.svg | 11 + coupons/index.html | 90 +++++++ coupons/index.js | 69 ++++++ coupons/style.css | 349 +++++++++++++++++++++++++++ 14 files changed, 575 insertions(+), 3 deletions(-) create mode 100644 .gitignore create mode 100644 assets/images/border-image-slice.png create mode 100644 coupons/README.md create mode 100644 coupons/img/Mcdonalds-icon.svg create mode 100644 coupons/img/cus-dashed-hori.svg create mode 100644 coupons/img/cus-dashed.svg create mode 100644 coupons/img/iphone-statusbar.svg create mode 100644 coupons/img/kfc-icon.svg create mode 100644 coupons/img/qrcode.png create mode 100644 coupons/img/starbucks-icon.svg create mode 100644 coupons/index.html create mode 100644 coupons/index.js create mode 100644 coupons/style.css diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0e291cf --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea +.Ds_Store \ No newline at end of file diff --git a/README.md b/README.md index 7f801ce..51820c9 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ ## List -| 名称 | Live Demo | Notes | -| ------ | ------------------------------------------------------------- | ------------ | -| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | \ No newline at end of file +| 名称 | Live Demo | Notes | +| ------ | -------------------------------------------------------------- | ------------------------------------------------------------------------------------ | +| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | +| coupon | [Link](https://cirolee.github.io/html_css_javascript/coupons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/coupons/README.md) | \ No newline at end of file diff --git a/assets/images/border-image-slice.png b/assets/images/border-image-slice.png new file mode 100644 index 0000000000000000000000000000000000000000..55bce92d82a62a292acd49285b3f144a59918ca3 GIT binary patch literal 9859 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 literal 0 HcmV?d00001 diff --git a/coupons/README.md b/coupons/README.md new file mode 100644 index 0000000..e30d16a --- /dev/null +++ b/coupons/README.md @@ -0,0 +1,24 @@ +# keypoints + +## css +1. border-image: 允许在元素的边框上绘制图像。这样就可以自定义边框样式,可以自定义图片,渐变色等。[More](https://developer.mozilla.org/zh-CN/docs/Web/CSS/border-image); +如果要实现单侧边框, 需要借助border-image-slice属性。它的作用是将引用的图像切片,共分为9个区域。 +![](../assets/images/border-image-slice.png) +语法: +```css +/* top | right | bottom | left */ +border-image-slice: 1 10% 20px 0; + +``` +单位默认为px; 每个值表示该区域显示图像的宽高。例如只想显示右侧,只需要设置: +```css +border-image-slice: 0 100% 0 0; +``` +右侧完全显示, 其他不显示。[More](https://developer.mozilla.org/zh-CN/docs/Web/CSS/border-image-slice) + +2. 伪元素::after, ::before的运用。所谓伪元素就是dom结构中不存在的元素。伪元素的最大好处的是不占用dom节点, 可以使dom变得很简洁。::before, ::after顾名思义就是在标签子元素的**前**, **后**插入一个元素,通常::after和::before是没有交互的,因为js无法获取到伪元素。例如分割线,点状符号, 一些无交互的前缀图标等。 +值得注意的是, 一些单标签元素如img, input是没有子元素的,因此也不会有::before, ::after + + +## javascript +1. `animationend`和`transitionend`。这两个事件都和动画相关。transitionend 事件会在 CSS transition 结束后触发。同理,animationend 事件会在 CSS animationend 结束后触发。 常用的使用场景是在动画结束后做一些事情,如动画结束后alert一下。 利用setTimeout可以做同样的事情,但是他是有弊端的首先我们需要知道动画的过度时间,再者setTimeout可能会造成阻塞, 导致没有按照设置的时间来执行代码, 而`animationend`, `transitionend`就会完美规避这些问题。 \ No newline at end of file diff --git a/coupons/img/Mcdonalds-icon.svg b/coupons/img/Mcdonalds-icon.svg new file mode 100644 index 0000000..8835f23 --- /dev/null +++ b/coupons/img/Mcdonalds-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/coupons/img/cus-dashed-hori.svg b/coupons/img/cus-dashed-hori.svg new file mode 100644 index 0000000..0a02496 --- /dev/null +++ b/coupons/img/cus-dashed-hori.svg @@ -0,0 +1,3 @@ + + + diff --git a/coupons/img/cus-dashed.svg b/coupons/img/cus-dashed.svg new file mode 100644 index 0000000..7e9a00c --- /dev/null +++ b/coupons/img/cus-dashed.svg @@ -0,0 +1,3 @@ + + + diff --git a/coupons/img/iphone-statusbar.svg b/coupons/img/iphone-statusbar.svg new file mode 100644 index 0000000..d82fd54 --- /dev/null +++ b/coupons/img/iphone-statusbar.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/coupons/img/kfc-icon.svg b/coupons/img/kfc-icon.svg new file mode 100644 index 0000000..f3cbaa1 --- /dev/null +++ b/coupons/img/kfc-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/coupons/img/qrcode.png b/coupons/img/qrcode.png new file mode 100644 index 0000000000000000000000000000000000000000..98efd86a68cb4effc63e67399d719a2d3f538633 GIT binary patch literal 2789 zcmb7GYfuws6kQC8U?FOXt-K;u!%WdSU}&5OK@2EN6{MAbi7~X(noJNPCI~@!h?!gML2i{p>}GyCJ4JF~Oa$WH;l$+mjduR)(gHb|Rl>V5u4O%4-DT1$#weCjSLMS7zk!)0flP;hHPb%86cw??nI3`_gl6 zSnuEOm4Pes&|a)M})+!?OLn#=W!e z5N|Mjyq3N%0<(lJ>o;fSZ%cP5Fi&0eVcuem?5WykMfAx7^iM!~T#weNPsUjR<<DY24aVMebDcFh&O7?1zH@x06QqS~SEXcj z*tn;w%cWac6lj>fX&-m)y-@|h;WE8WT=fYKnqSZx)%S8`q=gN}O#7Xth*??4Qb zdhBJ=n!A;`{X&St&#|O+AZ1JrHFQy5Ji(n@yk~E&YQkP@=HduvcT((`tW&+`Xw75P z^nN&X5KM#UOOK&A7!hVnOKa^YyU~ubi!=y2rm}gHsk{i`GC*JzzrH9$wAN3x7Bb{r z#-`vy41e&aF+b+BAyZ^quqfX&bDx$h{%Y|zc^`#l^A6>DZpOliD(UJ)-li#Ot%sPm zc}AL2YBTgtOg{}Ke@)e5b_wG+hnRXbN4Fx%2|veMm2bf$()%og zOwO`5;@JamEyBjXnsjJ3z42I4qno(>+Q;PiA3`-q->^PDfOg(eM^KJRZ~vYF=@LpQ z4)-c5@0&#lUEso?#N+OTwQ|WiBfi9@N1ZoMP1PV0h+YgGQ(*I@H)f)hm{~(@4=&dW z*!AGLM4fx@AgQKa2)XQ|h*)6mE^O4&y5V*(v>9%(*X=mG)rh}qcSfb$xiCDC0Am7g zb-u$<&0tlrQnu%byKnLr@6JkV+cTQZhl!dDk7x>Pp8guZ?hzrOscOZA;Qb^0!A$~j zzldclix1esA*vYA-d~~C_fafqP1tC;p3o(Pit?c%k=f77t8GrdyL_VA2}KSd|wE2E_o< z|6+P(!m3uRIAa&e+_++sv5>6~q!ah2bB!(n@MW$7^vjpx8WaRPI}lsL*1!oJx8RsI zA>L$=ax<1s?@aWsI12;VI7Q9UdDIh|KGBWC!ufEoX#=;8B0%?6ASNm{QhqSG;6I%W Bc*y_& literal 0 HcmV?d00001 diff --git a/coupons/img/starbucks-icon.svg b/coupons/img/starbucks-icon.svg new file mode 100644 index 0000000..d8f82a9 --- /dev/null +++ b/coupons/img/starbucks-icon.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/coupons/index.html b/coupons/index.html new file mode 100644 index 0000000..37e96ac --- /dev/null +++ b/coupons/index.html @@ -0,0 +1,90 @@ + + + + + + + Coupons + + + + +
    +
    + +
    +
    + +
    +
    +

    $10

    +

    McDonalds

    +
    +

    Valid until 01 February 2022

    +
    +
    +
    + +
    +
    +

    25% OFF

    +

    KFC

    +
    +

    Valid until 02 February 2022

    +
    +
    +
    + +
    +
    +

    1 Free Coffee

    +

    Starbucks

    +
    +

    Valid until 03 February 2022

    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +

    25% OFF

    +

    KFC

    +
    +
    +

    Get 25% at your next KFC buy

    +
      +
    • Reedeamble at all restaurants in the UK.
    • +
    • Not valid with any other discounts and promotions.
    • +
    • No cash value.
    • +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + \ No newline at end of file diff --git a/coupons/index.js b/coupons/index.js new file mode 100644 index 0000000..369a3ca --- /dev/null +++ b/coupons/index.js @@ -0,0 +1,69 @@ +// 卡券信息表 +const mockCouponsMap = [ + { + id: 'mcdonalds', + title: '$10', + brand: 'McDonalds', + desc: '$10 voucher for McDonalds', + expires: 'Valid until 01 February 2022' + }, + { + id: 'kfc', + title: '25% OFF', + brand: 'KFC', + desc: '25% discount', + expires: 'Valid until 02 February 2022' + }, + { + id: 'starbucks', + title: '1 Free Coffee', + brand: 'Starbucks', + desc: 'buy one get one free', + expires: 'Valid until 03 February 2022' + } +] +const coupons = document.querySelector('.coupons'); +const couponList = document.querySelector('#coupon-list'); +const detailPage = document.querySelector('#detail-page'); +const closeBack = document.querySelector('.close-back'); + +// 获取卡券详细信息 +const getCouponDetail = function(id) { + return mockCouponsMap.find(item => item.id === id) || {}; +} + +// 卡券详情动态赋值 +const setCouponData = function(data) { + document.querySelector('.coupon-detail .title').innerText = data.title; + document.querySelector('.coupon-detail .main i').className = `logo ${data.id}`; + document.querySelector('.coupon-detail .brand').innerText = data.brand; + document.querySelector('.coupon-detail .desc').innerText = data.desc; + document.querySelector('.coupon-detail .share .sub-text').innerText = data.expires; +} + +coupons.addEventListener('click', function(event) { + const targetEl = event.target.closest('.coupon-item'); + const id = targetEl.dataset.id; + const couponDetail = getCouponDetail(id); + + setCouponData(couponDetail); + // 显示d操作 + couponList.classList.remove('show-from-left'); + couponList.classList.add('hide-to-left'); + detailPage.classList.add('show-from-right'); + detailPage.classList.remove('hide-to-right') + couponList.addEventListener('animationend', function() { + document.querySelector('#close-back').style.display = 'flex'; + }) +}); + +// 关闭操作 +closeBack.addEventListener('click', function() { + detailPage.classList.remove('show-from-right'); + detailPage.classList.add('hide-to-right') + couponList.classList.remove('hide-to-left'); + couponList.classList.add('show-from-left'); + couponList.addEventListener('animationend', function() { + document.querySelector('#close-back').style.display = 'none'; + }) +}) \ No newline at end of file diff --git a/coupons/style.css b/coupons/style.css new file mode 100644 index 0000000..0dacb07 --- /dev/null +++ b/coupons/style.css @@ -0,0 +1,349 @@ +* { + margin: 0; +} + +:root { + --bg-color: #004165; +} + +body { + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + overflow: hidden; + background: linear-gradient(180deg, rgba(73, 222, 255, 0.78) 0%, rgba(42, 203, 146, 0.88) 41.15%, #027D76 100%); +} + +.coupon-box { + width: 375px; + height: 720px; + display: flex; + background-color: var(--bg-color); + position: relative; + overflow: hidden; +} + +.coupon-box::before { + content: ''; + width: 100%; + height: 44px; + display: block; + background: url('./img/iphone-statusbar.svg') center no-repeat; + background-size: 100% auto; +} + +.content { + position: absolute; + top: 44px; + left: 0; + right: 0; + padding: 0 24px; +} + +.nav-header { + color: #fff; + text-align: center; +} + +.coupons { + margin-top: 40px; +} + +.coupon-item { + height: 104px; + border-radius: 8px; + background-color: #fff; + position: relative; + padding: 10px; + display: flex; + box-sizing: border-box; + cursor: pointer; +} + +/* 卡券缺口 */ +.circle::before, +.circle::after { + content: ''; + width: 32px; + height: 32px; + border-radius: 50%; + position: absolute; + background-color: var(--bg-color); + top: 50%; + transform: translateY(-50%); + pointer-events: none; +} + +.coupon-item:not(:first-child) { + margin-top: 24px; +} + +.coupon-item::before { + left: -18px; +} + +.coupon-item::after { + right: -18px; +} + +.business-logo { + width: 116px; + height: 100%; + position: relative; + display: flex; + justify-content: center; + align-items: center; +} + +.logo { + width: 56px; + height: 56px; + background-position: center; + background-repeat: no-repeat; + background-size: 100% auto; + display: block; +} + +.mcdonalds { + background-image: url('./img/Mcdonalds-icon.svg'); +} + +.kfc { + background-image: url('./img/kfc-icon.svg'); +} + +.starbucks { + background-image: url('./img/starbucks-icon.svg'); +} + +/* border-image-slice实现自定义边框,之显示右侧 */ +.business-logo::after { + content: ''; + height: 100%; + display: block; + border: 1px solid transparent; + border-image-source: url('./img/cus-dashed.svg'); + border-image-repeat: repeat; + border-image-slice: 0 100% 0 0; + position: absolute; + right: 0; +} + +.coupon-desc { + flex: 1; + padding: 0 6px 0 16px; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.sub-text { + font-size: 10px; + color: rgba(0, 0, 0, 0.3); +} + +.main .title { + font-size: 24px; + font-weight: bold; +} + +/* 卡券详情 */ +.coupon-detail { + height: 450px; + margin-top: 38px; + border-radius: 12px; + background-color: #fff; + display: flex; + flex-direction: column; + position: relative; +} + +.icon { + position: relative; + cursor: pointer; + color: #fff; + font-size: 24px; +} + +.coupon-detail .detail { + flex: 1; +} + + +.coupon-detail.circle::before { + bottom: 118px; + top: unset; + left: -16px; +} + +.coupon-detail.circle::after { + bottom: 118px; + top: unset; + right: -16px; +} + +.coupon-detail .detail .main { + display: flex; + justify-content: center; + margin-top: 26px; +} + +.coupon-detail .detail .title-box { + margin-top: 10px; +} + +.coupon-detail .logo { + width: 80px; + height: 80px; + margin-right: 30px; +} + +.coupon-detail .desc { + font-weight: bold; + font-size: 17px; + text-align: center; +} + +.coupon-detail ul { + padding: 0 54px; + font-size: 14px; + margin-top: 16px; +} + +.coupon-detail ul li { + margin-bottom: 8px; +} + +.coupon-detail .share { + height: 150px; + position: relative; +} + +.coupon-detail .share::before { + content: ''; + width: 80%; + display: block; + border: 1px solid transparent; + border-image-source: url('./img/cus-dashed-hori.svg'); + border-image-repeat: repeat; + border-image-slice: 100% 0 0 0; + position: absolute; + top: 0; + left: 50%; + transform: translateX(-50%); +} + +.qrcode { + width: 90px; + height: 90px; + position: absolute; + top: 46%; + left: 50%; + transform: translate(-50%, -50%); +} + +.footer { + width: 100%; + bottom: 12px; + left: 0; + padding: 0 32px; + box-sizing: border-box; + position: absolute; + display: flex; + justify-content: space-between; +} + +.footer .icon { + font-size: 18px; + color: var(--bg-color); +} + +.close-back { + width: 60px; + height: 60px; + background-color: #fff; + border-radius: 50%; + justify-content: center; + align-items: center; + cursor: pointer; + margin-left: 50%; + margin-top: 50%; + transform: translateX(-50%); + display: none; + opacity: 0; + animation: closeBackShow 0.15s 0.1s ease-in both; +} + +.close-back i { + font-size: 28px; +} + +.detail-page { + transform: translateX(380px); +} + + +.hide-to-left { + animation: hideToLeft 0.3s ease forwards; +} + +.hide-to-right { + animation: hideToRIght 0.3s ease forwards; +} + +.show-from-left { + animation: showFromLeft 0.3s ease-in-out forwards; +} + +.show-from-right { + animation: showFromRight 0.3s ease-in-out forwards; +} + +@keyframes hideToLeft { + from { + transform: translateX(0); + } + + to { + transform: translateX(-380px); + } +} + +@keyframes hideToRight { + from { + transform: translateX(0); + } + + to { + transform: translateX(380px); + } +} + +@keyframes showFromRight { + from { + transform: translateX(380px); + } + + to { + transform: translateX(0); + } +} + +@keyframes showFromLeft { + from { + transform: translateX(-380px); + } + + to { + transform: translateX(0); + } +} + + +@keyframes closeBackShow { + to { + opacity: 1; + margin-top: 24%; + } +} \ No newline at end of file From dce661dbe49049d4c54dfca7aacc3a06e81c94e8 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Thu, 23 Jun 2022 09:39:10 +0000 Subject: [PATCH 09/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@ccabd76b461a731502eca458f6b13c888?= =?UTF-8?q?437f823=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- coupons/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/coupons/README.md b/coupons/README.md index e30d16a..36d53ba 100644 --- a/coupons/README.md +++ b/coupons/README.md @@ -1,4 +1,5 @@ -# keypoints +# keypoints +设计稿 [Link](https://www.figma.com/file/MjpFBX1neGBlPg11vtfB0W/DAILY-UI-%2361-Redeem-Coupon-(Community)) ## css 1. border-image: 允许在元素的边框上绘制图像。这样就可以自定义边框样式,可以自定义图片,渐变色等。[More](https://developer.mozilla.org/zh-CN/docs/Web/CSS/border-image); @@ -21,4 +22,4 @@ border-image-slice: 0 100% 0 0; ## javascript -1. `animationend`和`transitionend`。这两个事件都和动画相关。transitionend 事件会在 CSS transition 结束后触发。同理,animationend 事件会在 CSS animationend 结束后触发。 常用的使用场景是在动画结束后做一些事情,如动画结束后alert一下。 利用setTimeout可以做同样的事情,但是他是有弊端的首先我们需要知道动画的过度时间,再者setTimeout可能会造成阻塞, 导致没有按照设置的时间来执行代码, 而`animationend`, `transitionend`就会完美规避这些问题。 \ No newline at end of file +1. `animationend`和`transitionend`。这两个事件都和动画相关。transitionend 事件会在 CSS transition 结束后触发。同理,animationend 事件会在 CSS animationend 结束后触发。 常用的使用场景是在动画结束后做一些事情,如动画结束后alert一下。 利用setTimeout可以做同样的事情,但是他是有弊端的首先我们需要知道动画的过度时间,再者setTimeout可能会造成阻塞, 导致没有按照设置的时间来执行代码, 而`animationend`, `transitionend`就会完美规避这些问题。 From dd59fda263878bd86c07643d75a585ea0a0c4b0f Mon Sep 17 00:00:00 2001 From: CiroLee Date: Sun, 26 Jun 2022 19:43:05 +0000 Subject: [PATCH 10/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@096f9703b043cc60a9ed4fe2b5a81a77f?= =?UTF-8?q?7b51b53=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 ++-- sidemenu/README.md | 4 ++ sidemenu/index.html | 54 ++++++++++++++++++++++ sidemenu/index.js | 11 +++++ sidemenu/style.css | 107 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 181 insertions(+), 4 deletions(-) create mode 100644 sidemenu/README.md create mode 100644 sidemenu/index.html create mode 100644 sidemenu/index.js create mode 100644 sidemenu/style.css diff --git a/README.md b/README.md index 51820c9..3d8c89e 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ ## List -| 名称 | Live Demo | Notes | -| ------ | -------------------------------------------------------------- | ------------------------------------------------------------------------------------ | -| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | -| coupon | [Link](https://cirolee.github.io/html_css_javascript/coupons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/coupons/README.md) | \ No newline at end of file +| 名称 | Live Demo | Notes | +| -------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------ | +| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | +| coupon | [Link](https://cirolee.github.io/html_css_javascript/coupons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/coupons/README.md) | +| sidemenu | [Link](https://cirolee.github.io/html_css_javascript/sidemenu/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/sidemenu/README.md) | \ No newline at end of file diff --git a/sidemenu/README.md b/sidemenu/README.md new file mode 100644 index 0000000..5d06de3 --- /dev/null +++ b/sidemenu/README.md @@ -0,0 +1,4 @@ +# sidemenu + +设计稿: [Link](https://js.design/f/WyIlv6?p=C2SW_MofqF) + diff --git a/sidemenu/index.html b/sidemenu/index.html new file mode 100644 index 0000000..dc8d05f --- /dev/null +++ b/sidemenu/index.html @@ -0,0 +1,54 @@ + + + + + + + + SideMenu + + + + + +
    +
      + + + + + + +
    + +
    + + + + \ No newline at end of file diff --git a/sidemenu/index.js b/sidemenu/index.js new file mode 100644 index 0000000..cda23e3 --- /dev/null +++ b/sidemenu/index.js @@ -0,0 +1,11 @@ +const toogle = document.querySelector('#toogle'); +const sideMenu = document.querySelector('#side-menu'); + +toogle.addEventListener('click', function() { + isCollapsible = Array.from(sideMenu.classList).includes('collapsible'); + if (isCollapsible) { + sideMenu.classList.remove('collapsible'); + } else { + sideMenu.classList.add('collapsible'); + } +}); \ No newline at end of file diff --git a/sidemenu/style.css b/sidemenu/style.css new file mode 100644 index 0000000..94d3287 --- /dev/null +++ b/sidemenu/style.css @@ -0,0 +1,107 @@ +* { + margin: 0; +} + +body { + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + background: linear-gradient(141.71deg, rgba(227, 227, 227, 0.74) 0%, rgba(151, 151, 151, 0.53) 100%); +} + +ul, li { + padding: 0; + list-style: none; +} + +.side-menu { + width: 180px; + height: 520px; + background-color: #057DFC; + border-radius: 8px; + padding: 10px; + position: relative; + transition: width 0.2s ease; + box-shadow: 3px 4px 16px rgba(4, 106, 214, 0.4); + /* position: absolute; */ +} + +.menu-item { + color: #fff; + height: 42px; + display: flex; + align-items: center; + padding: 0 12px; + border-radius: 8px; + font-size: 14px; + cursor: pointer; + white-space: nowrap; + position: relative; + transition: background-color 0.2s linear; +} + +.menu-item i { + font-size: 16px; +} +.menu-text { + margin-left: 8px; + transition: opacity 0.1s ease; +} + +.menu-item:hover { + background-color: #046FE0; +} +/* popover气泡提示 */ +.popover { + position: absolute; + top: 50%; + left: calc(100% + 8px); + transform:translateY(-50%); + display: none; + background-color: #fff; + border-radius: 2px; + padding: 8px; + color: #333; + font-size: 12px; + box-shadow: 0px 6px 6px rgb(0 0 0 / 10%); +} +/* css三角形: arrow-left */ +.popover::before { + content: ''; + position: absolute; + border-width: 6px; + left: -12px; + top: 50%; + transform: translateY(-50%); + border-style: solid; + border-right-color: #fff; + border-top-color: transparent; + border-left-color: transparent; + border-bottom-color: transparent; +} +.toogle { + position: absolute; + width: calc(100% - 20px); + padding: 0; + bottom: 10px; + justify-content: center; +} +.toogle i { + font-size: 24px; + transition: transform 0.2s ease; +} + +/* collapsible时动效 */ +.side-menu.collapsible { + width: 42px; +} +.side-menu.collapsible .menu-text { + opacity: 0; +} +.side-menu.collapsible .toogle i { + transform: rotate(180deg); +} +.side-menu.collapsible .menu-item:hover .popover { + display: inline-block; +} \ No newline at end of file From bdc4ba5e88bebdc962953cfc899b00accc58545c Mon Sep 17 00:00:00 2001 From: CiroLee Date: Thu, 30 Jun 2022 19:01:49 +0000 Subject: [PATCH 11/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@66a5a79841c88b9f178427741c6132d7d?= =?UTF-8?q?8baf37e=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 3 ++ README.md | 11 +++--- switch/img/moon-icon.svg | 9 +++++ switch/img/sun-icon.svg | 9 +++++ switch/index.html | 17 +++++++++ switch/index.js | 35 ++++++++++++++++++ switch/style.css | 80 ++++++++++++++++++++++++++++++++++++++++ 7 files changed, 159 insertions(+), 5 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 switch/img/moon-icon.svg create mode 100644 switch/img/sun-icon.svg create mode 100644 switch/index.html create mode 100644 switch/index.js create mode 100644 switch/style.css diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..aef8443 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} \ No newline at end of file diff --git a/README.md b/README.md index 3d8c89e..9856659 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,9 @@ ## List -| 名称 | Live Demo | Notes | -| -------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------ | -| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | -| coupon | [Link](https://cirolee.github.io/html_css_javascript/coupons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/coupons/README.md) | -| sidemenu | [Link](https://cirolee.github.io/html_css_javascript/sidemenu/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/sidemenu/README.md) | \ No newline at end of file +| 名称 | Live Demo | Notes | +| -------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | +| coupon | [Link](https://cirolee.github.io/html_css_javascript/coupons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/coupons/README.md) | +| sidemenu | [Link](https://cirolee.github.io/html_css_javascript/sidemenu/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/sidemenu/README.md) | +| switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | \ No newline at end of file diff --git a/switch/img/moon-icon.svg b/switch/img/moon-icon.svg new file mode 100644 index 0000000..f60b605 --- /dev/null +++ b/switch/img/moon-icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/switch/img/sun-icon.svg b/switch/img/sun-icon.svg new file mode 100644 index 0000000..86c72bd --- /dev/null +++ b/switch/img/sun-icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/switch/index.html b/switch/index.html new file mode 100644 index 0000000..63171fc --- /dev/null +++ b/switch/index.html @@ -0,0 +1,17 @@ + + + + + + + switch开关 + + + +
    + + +
    + + + \ No newline at end of file diff --git a/switch/index.js b/switch/index.js new file mode 100644 index 0000000..8f6245b --- /dev/null +++ b/switch/index.js @@ -0,0 +1,35 @@ +// switch事件 +// 1. switch 长按改变样式, 按下计时, 超过2s则,添加动画类 +let switchLangPressTimer; +const switchMouseDown = (labelElement) => { + let time = 0; + switchLangPressTimer = setInterval(() => { + time += 200; + if (time > 200) { + labelElement.classList.add('circle-screw'); + clearInterval(switchLangPressTimer); + } + }, 200); + +} +const switchEl = document.getElementById('switch'); +switchEl.addEventListener('mousedown', () => { + const nextLabel = switchEl.nextElementSibling; + switchMouseDown(nextLabel); +}); +switchEl.addEventListener('mouseup', (event) => { + clearInterval(switchLangPressTimer); + switchEl.nextElementSibling.classList.remove('circle-screw'); +}); + +switchEl.addEventListener('click', function(event) { + const { checked } = event.target; + if (checked) { + document.body.classList.remove('light'); + document.body.classList.add('dark'); + } else { + document.body.classList.add('light'); + document.body.classList.remove('dark'); + } +}) + diff --git a/switch/style.css b/switch/style.css new file mode 100644 index 0000000..3158770 --- /dev/null +++ b/switch/style.css @@ -0,0 +1,80 @@ + +* { + margin: 0; + box-sizing: border-box; +} + +body { + display: flex; + height: 100vh; + justify-content: center; + align-items: center; + transition: background-color 0.4s linear; + background-color: #f2f2f2; +} + +body.dark { + background-color: #141414; +} +.switch-box { + position: relative; +} +[type=checkbox] { + width: 180px; + height: 90px; + position: absolute; + top: 0; + left: 0; + opacity: 0; + margin: 0; + z-index: 1; + cursor: pointer; +} +/* switch */ +.switch { + width: 180px; + height: 90px; + border-radius: 45px; + background-color: #ffe09d; + display: flex; + padding: 6px; + align-items: center; + transition: background-color 0.3s ease; +} +/* siwtch-圆样式及动画设置 */ +.switch::before { + content: ''; + width: 81px; + height: 81px; + border-radius: 80px; + background-color: #fff; + background-image: url('./img/sun-icon.svg'); + background-repeat: no-repeat; + background-position: center; + background-size: 60px auto; + transition: all 0.3s ease; + position: relative; + margin-left: 0; + box-shadow: 2px 4px 10px -2px rgba(227, 193, 120, 0.9); +} + +/* checked时颜色变化 */ +[type=checkbox]:checked + .switch { + background-color: #1f1f1f; +} +/* checked时圆的位置变化 */ +[type=checkbox]:checked +.switch::before { + margin-left: 88px; + background-color: #313131; + background-image: url('./img/moon-icon.svg'); + box-shadow: -2px 4px 10px -2px #000; +} +/* 圆圈长按时添加形变类:circie-screw, ps: 此时未checked */ +.switch.circle-screw::before { + width: 98px; +} +/* unchecked时长按效果, 达到 */ +[type=checkbox]:checked + .switch.circle-screw::before { + width: 98px; + margin-left: 72px; +} \ No newline at end of file From ee623511b2b36385721f5271d3aef71502a56330 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Mon, 4 Jul 2022 19:41:12 +0000 Subject: [PATCH 12/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@a5419a9379a9fa74214ffde9470e4580b?= =?UTF-8?q?8b07cb1=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- progress/index.html | 23 +++++++++++++ progress/index.js | 52 +++++++++++++++++++++++++++++ progress/style.css | 79 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 progress/index.html create mode 100644 progress/index.js create mode 100644 progress/style.css diff --git a/README.md b/README.md index 9856659..2be015a 100644 --- a/README.md +++ b/README.md @@ -9,4 +9,5 @@ | tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | | coupon | [Link](https://cirolee.github.io/html_css_javascript/coupons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/coupons/README.md) | | sidemenu | [Link](https://cirolee.github.io/html_css_javascript/sidemenu/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/sidemenu/README.md) | -| switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | \ No newline at end of file +| switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | +| progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | \ No newline at end of file diff --git a/progress/index.html b/progress/index.html new file mode 100644 index 0000000..5bbed07 --- /dev/null +++ b/progress/index.html @@ -0,0 +1,23 @@ + + + + + + + Progress + + + +
    +
    + +
    +
    +
    + + + +
    + + + \ No newline at end of file diff --git a/progress/index.js b/progress/index.js new file mode 100644 index 0000000..4546860 --- /dev/null +++ b/progress/index.js @@ -0,0 +1,52 @@ +const progress = document.getElementById('progress'); +const val = document.querySelector('#progress span'); +const startBtn = document.getElementById('start'); +const resetBtn = document.getElementById('reset'); +const pauseBtn = document.getElementById('pause'); +let width = ''; +let timer; +let s = null; + +function animate() { + width = Number(progress.style.width.replace(/%/, '')); + if (width < 100) { + progress.style.width = width + 0.2 + '%'; + val.innerHTML = parseInt(progress.style.width) + '%'; + timer = requestAnimationFrame(animate); + } else { + progress.classList.add('finished'); + } +} +function start() { + s = 'start'; + progress.classList.add('start'); + progress.classList.remove('finished'); + timer = requestAnimationFrame(animate); +} + +function toggle() { + switch(s) { + case 'start': + cancelAnimationFrame(timer); + pauseBtn.innerText = 'continue'; + s = 'pause'; + break; + case 'pause': + timer = requestAnimationFrame(animate); + pauseBtn.innerText = 'pause'; + s = 'start'; + } +} + +function reset() { + cancelAnimationFrame(timer); + progress.classList.remove('start'); + progress.classList.remove('finished'); + progress.style.width = '0%'; + s = 'start'; + pauseBtn.innerText = 'pause'; +} + +startBtn.addEventListener('click', start, false); +pauseBtn.addEventListener('click', toggle, false); +resetBtn.addEventListener('click', reset, false) \ No newline at end of file diff --git a/progress/style.css b/progress/style.css new file mode 100644 index 0000000..2ff0e97 --- /dev/null +++ b/progress/style.css @@ -0,0 +1,79 @@ +* { + margin: 0; + box-sizing: border-box; +} + +:root { + --main-color: #32AFFC; + --border-color: #2A94D6; +} + +body { + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + background-color: #e4e4e4; +} + +.progress { + width: 60%; + height: 20px; + border-radius: 4px; + position: relative; + background-color: #fff; + box-shadow: 4px 5px 0px rgba(46, 151, 216, 0.1); +} + +.progress .value { + height: 20px; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + background: linear-gradient(270deg, #2a94d6 0%, rgba(50, 175, 252, 0.62) 100%); + position: absolute; + display: none; +} + +.progress .value::before { + content: ''; + width: 1px; + height: 50px; + position: absolute; + background-color: #2a94d6; + transform: translateY(-40px); + right: 0; +} + +.progress .value span { + position: absolute; + right: 0; + bottom: 60px; + color: var(--main-color); + font-weight: bold; +} + +.progress .value.start { + display: block; +} + +.progress .value.finished { + border-radius: 4px; +} + + +.button-group { + margin-top: 100px; +} +button { + width: 120px; + height: 44px; + border-radius: 8px; + color: #fff; + font-size: 16px; + cursor: pointer; + background-color: var(--main-color); + border: 1px solid var(--border-color); + margin-right: 6px; +} + From 865feb77e9b8d1094f1e2b57111edce5121b690b Mon Sep 17 00:00:00 2001 From: CiroLee Date: Wed, 6 Jul 2022 21:57:47 +0000 Subject: [PATCH 13/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@cca23d5b991c3724ebd051176eab95858?= =?UTF-8?q?4c7a010=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- avatar/README.md | 18 +++++ avatar/index.html | 118 ++++++++++++++++++++++++++++ avatar/style.css | 195 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 333 insertions(+), 1 deletion(-) create mode 100644 avatar/README.md create mode 100644 avatar/index.html create mode 100644 avatar/style.css diff --git a/README.md b/README.md index 2be015a..fef122d 100644 --- a/README.md +++ b/README.md @@ -10,4 +10,5 @@ | coupon | [Link](https://cirolee.github.io/html_css_javascript/coupons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/coupons/README.md) | | sidemenu | [Link](https://cirolee.github.io/html_css_javascript/sidemenu/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/sidemenu/README.md) | | switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | -| progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | \ No newline at end of file +| progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | +| avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | | \ No newline at end of file diff --git a/avatar/README.md b/avatar/README.md new file mode 100644 index 0000000..8e7ab9c --- /dev/null +++ b/avatar/README.md @@ -0,0 +1,18 @@ +设计稿: [Link](https://js.design/f/ybYCi7?p=b8NsyRunUk) +# keypoints +## css +css变量函数 +var(custom-property-name, value) 函数用于插入自定义的属性值,如果一个属性值在多处被使用,该方法就很有用。 +custom-property-name 必需。自定义属性的名称,必需以 -- 开头。 +value 可选。备用值,在属性不存在的时候使用。[More](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) + +```css +/* 当--height不存在时, 会使用100px */ +width: var(--height, 100px); + +``` +css变量作用域 +css变量作用域分为局部作用域(定义在选择器内)和全局作用域(定义在根元素内,如:root)。 同样, css变量可以定义在style行内样式中, 为全局变量。 + +css单位 +em: 在 font-size 中使用是相对于父元素的字体大小,在其他属性中使用是相对于自身的字体大小 [More](https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Building_blocks/Values_and_units) \ No newline at end of file diff --git a/avatar/index.html b/avatar/index.html new file mode 100644 index 0000000..f6a4a00 --- /dev/null +++ b/avatar/index.html @@ -0,0 +1,118 @@ + + + + + + + + avatars + + + + + +
    +
    +

    基本头像

    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +

    文字和颜色

    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +

    头像状态: 在线 下线 通知 选中

    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +

    头像组

    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +

    头像综合运用

    +
    +
    +
    + +
    +
    +
    +

    叉烧包小笼包奶黄包

    +

    疯狂打码中

    +
    +
    +
    +
    + +
    +
    +
    +

    叉烧包小笼包奶黄包

    +

    疯狂打码中

    +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/avatar/style.css b/avatar/style.css new file mode 100644 index 0000000..3162da9 --- /dev/null +++ b/avatar/style.css @@ -0,0 +1,195 @@ +* { + margin: 0; +} +:root { + --xlarge-size: 56px; + --large-size: 48px; + --medium-size: 40px; + --small-size: 32px; + --checkd-color: #04C93F; + --box-shadow: 1px 3px 8px rgba(0, 0, 0, 0.2); + --default-svg: url('data:image/svg+xml;utf8,') +} +body { + height: 100vh; + display: flex; + justify-content: center; + padding: 0 20%; +} + +h4 { + margin-bottom: 12px; +} + +.container { + flex: 1; + margin-top: 10%; +} + +.box { + padding: 20px; + margin-bottom: 20px; +} + +.row { + display: flex; + align-items: center; +} +.row:not(.avatar-group) .avatar { + margin-right: 20px; +} +/* avatar设置font-size非常关键 */ +.avatar { + width: var(--medium-size); + height: var(--medium-size); + border-radius: 50%; + position: relative; + background-color: var(--bg, #d6d6d6); + box-shadow: 1px 3px 12px -4px var(--bg, rgba(0,0,0, 0.4)); + font-size: var(--medium-size); + display: inline-flex; + align-items: center; + justify-content: center; +} +.avatar.large { + width: var(--large-size); + height: var(--large-size); + font-size: var(--large-size); +} + +.avatar.xlarge { + width: var(--xlarge-size); + height: var(--xlarge-size); + font-size: var(--xlarge-size); +} + +.avatar.small { + width: var(--small-size); + height: var(--small-size); + font-size: var(--small-size); +} + +.avatar img { + width: 100%; + height: 100%; + border-radius: var(--medium-size); + object-fit: cover; +} + +.avatar.xlarge img { + border-radius: var(--xlarge-size); +} + +.avatar.large img { + border-radius: var(--large-size); +} + +.avatar.small img { + border-radius: var(--small-size); +} + +.avatar span { + color: #fff; + font-size: 0.5em; +} + +/* 巧用:empty伪类实现空状态图标填充 */ +.avatar:empty { + background: #d6d6d6 var(--default-svg) center no-repeat; + background-size: 52% auto; +} + +.avatar .reddot, +.avatar .dot { + width: calc(1em * 0.3); + height: calc(1em * 0.3); + border-radius: calc(1em * 0.3); + position: absolute; + right: 0; + bottom: 0; +} + +.avatar.online .dot { + background: linear-gradient(134.57deg, rgba(4, 201, 63, 1) 0%, rgba(3, 166, 52, 1) 100%); +} + +.avatar.offline .dot { + background: linear-gradient(137.1deg, rgba(191, 191, 191, 1) 0%, rgba(156, 156, 156, 1) 100%); +} + +.avatar.offline img { + filter: saturate(0.3); + opacity: 0.8; +} + +.avatar.notice .reddot { + right: 0; + top: 0; + background-color: #F22727; +} +/* 因为dot的宽高要利用font-sie的继承值,所以这里使用伪元素, 单独设置font-size */ +.avatar.notice .reddot::after { + content: attr(data-count); + width: 100%; + height: 100%; + font-size:calc(0.5 * 0.3em); + display: flex; + justify-content: center; + align-items: center; + color: #fff; +} + +.avatar .checked { + width: 22px; + height: 22px; + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + background-color: var(--checkd-color); + position: absolute; + right: -2px; + bottom: -4px; + font-size: 16px; + color: #fff; +} + +.avatar.checked::before { + content: ''; + width: 110%; + height: 110%; + border-radius: 50%; + position: absolute; + border: 2px solid var(--checkd-color); +} + +.avatar-group .avatar { + border: 2px solid #fff; + margin-left: calc(-0.3em); + box-shadow: unset; +} + +.card { + width: 200px; + padding: 12px; + display: flex; + align-items: center; + border: 1px solid #f1f1f1; + border-radius: 4px; + margin-bottom: 12px; +} + +.card .content { + color: rgba(20, 20, 20, 0.4); + font-size: 12px; + margin-left: 12px; +} + +.card .title { + color: #333; + font-size: 14px; +} + +.card.offline .title { + color: rgba(20, 20, 20, 0.6); +} \ No newline at end of file From 5cba2370193069ee16c298fa7e5eb639f6cb03fb Mon Sep 17 00:00:00 2001 From: CiroLee Date: Thu, 7 Jul 2022 10:37:30 +0000 Subject: [PATCH 14/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@dac4995ea5c72e131ab122b25bcf12094?= =?UTF-8?q?8342ef1=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fef122d..72627f6 100644 --- a/README.md +++ b/README.md @@ -11,4 +11,4 @@ | sidemenu | [Link](https://cirolee.github.io/html_css_javascript/sidemenu/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/sidemenu/README.md) | | switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | | progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | -| avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | | \ No newline at end of file +| avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | \ No newline at end of file From ca8133375c2ca9279023d6b03b40d30937cecf69 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Sun, 10 Jul 2022 19:00:32 +0000 Subject: [PATCH 15/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@9057df45158e317980f4f4d800d2a7a47?= =?UTF-8?q?e17155f=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- calendar/index.html | 174 +++++++++++++++++++++++++++++++++++++++ calendar/index.js | 192 ++++++++++++++++++++++++++++++++++++++++++++ calendar/readme.md | 1 + calendar/style.css | 134 +++++++++++++++++++++++++++++++ 5 files changed, 503 insertions(+), 1 deletion(-) create mode 100644 calendar/index.html create mode 100644 calendar/index.js create mode 100644 calendar/readme.md create mode 100644 calendar/style.css diff --git a/README.md b/README.md index 72627f6..870515f 100644 --- a/README.md +++ b/README.md @@ -11,4 +11,5 @@ | sidemenu | [Link](https://cirolee.github.io/html_css_javascript/sidemenu/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/sidemenu/README.md) | | switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | | progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | -| avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | \ No newline at end of file +| avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | +| calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/README.md) | \ No newline at end of file diff --git a/calendar/index.html b/calendar/index.html new file mode 100644 index 0000000..4711b63 --- /dev/null +++ b/calendar/index.html @@ -0,0 +1,174 @@ + + + + + + + + + + + calendar + + + +
    +
    +
    + + +
    +

    + +
    +
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
    +
    +
    +
    + +
    + + + \ No newline at end of file diff --git a/calendar/index.js b/calendar/index.js new file mode 100644 index 0000000..470499e --- /dev/null +++ b/calendar/index.js @@ -0,0 +1,192 @@ +const calendarGrid = 42; // 7 * 6宫格; +let date = new Date(); +// 是否为闰年 +const isLeap = (year) => { + return (year % 4 === 0 && year % 100 !== 0) || year % 100 === 0; +}; + +// 获取[month]月有几天 +const getDays = (year, month) => { + const feb = isLeap(year) ? 29 : 28; + const daysPerMonth = [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + return daysPerMonth[month]; +}; + +// 获取下个月/上个月有多少天 +const getNextOrLastMonthDays = (date, type) => { + const month = date.getMonth(); + const year = date.getFullYear(); + if (type === 'last') { + // 如果当前月份为一月(month = 0), 则上个月为前一年的12月(month = 11) + const lastMonth = month === 0 ? 11 : month - 1; + const lastYear = lastMonth === 11 ? year - 1 : year; + return { + year: lastYear, + month: lastMonth, + days: getDays(lastYear, lastMonth), + }; + } + // 如果当前月份为12月(month = 11), 则上个月为下一年的1月(month = 0) + const nextMonth = month === 11 ? 0 : month + 1; + const nextYear = nextMonth === 0 ? year + 1 : year; + return { + year: nextYear, + month: nextMonth, + days: getDays(nextYear, nextMonth), + }; +}; +// 生成日历数据 +generateCalendar = (date) => { + const currentYear = date.getFullYear(); + const currentMonth = date.getMonth(); + // 当月天数 + const days = getDays(currentYear, currentMonth); + // 获取上月末尾天数和下月开头的天数,用于填补当月日历空白 + const { days: lastMonthDays, year: lastMonthYear, month: lastMonth } = getNextOrLastMonthDays(date, 'last'); + const { year: nextMonthYear, month: nextMonth } = getNextOrLastMonthDays(date, 'next'); + // 1号是星期几 + const weekIndex = new Date(`${currentYear}, ${currentMonth + 1}, 1`).getDay(); + // 显示在当月末尾的下月天数 + const trailDays = calendarGrid - weekIndex - days; + let trailVal = 0; + const calendarTable = []; + for (let i = 0; i < calendarGrid; i++) { + // 补充上月天数 + if (i < weekIndex) { + calendarTable[i] = { + year: lastMonthYear, + month: lastMonth, + day: lastMonthDays - weekIndex + i + 1, + isCurrentMonth: false, + }; + // 补充下月天数 + } else if (i >= days + weekIndex) { + if (trailVal < trailDays) { + trailVal += 1; + } + calendarTable[i] = { + year: nextMonthYear, + month: nextMonth, + day: trailVal, + isCurrentMonth: false, + }; + } + } + // 填充当月日期 + for (let d = 1; d <= days; d++) { + calendarTable[weekIndex + d - 1] = { + year: currentYear, + month: currentMonth, + day: d, + isCurrentMonth: true, + }; + } + + return calendarTable; +}; +// 几个工具函数 +function addClassNames(docNode, classNames) { + classNames.split(' ').forEach(c => { + c && docNode.classList.add(c); + }) +} + +function removeClassNames(docNode, classNames) { + classNames.split(' ').forEach(c => { + c && docNode.classList.remove(c); + }) +} +// 渲染日历 +function renderCalendar(date = new Date(), create = false) { + const calendarData = generateCalendar(date); + const today = new Date(); + enabledTodatBtn(); + setDateInfo(); + console.log(calendarData); + const content = document.getElementById('content'); + // 动态创建标签,初始化时调用 + if (create) { + const fragment = document.createDocumentFragment(); + calendarData.forEach(item => { + const li = document.createElement('li'); + const div = document.createElement('div'); + const isActive = [ + item.day === today.getDate(), + item.month === today.getMonth(), + item.year === today.getFullYear(), + item.isCurrentMonth + ].every(Boolean); + const liClass = `date flex-center ${isActive ? 'active' : ''} ${item.isCurrentMonth ? '' : 'light'}`; + addClassNames(div, 'date-num flex-center'); + addClassNames(li, liClass); + div.innerText = item.day; + li.appendChild(div); + fragment.appendChild(li); + }); + + content.append(fragment); + + } else { + const children = Array.from(content.children).slice(1); + + calendarData.forEach((item, index) => { + const isActive = [ + item.day === today.getDate(), + item.month === today.getMonth(), + item.year === today.getFullYear(), + item.isCurrentMonth + ].every(Boolean); + + children[index].childNodes[0].innerText = item.day; + isActive ? addClassNames(children[index], 'active') : removeClassNames(children[index], 'active'); + item.isCurrentMonth ? removeClassNames(children[index], 'light') : addClassNames(children[index], 'light'); + }) + } +} + +function changeMonth(type) { + let month = 0; + let year = 1970; + if (type === 'prev') { + month = date.getMonth() === 0 ? 11 : date.getMonth() - 1; + year = month === 11 ? date.getFullYear() - 1 : date.getFullYear(); + } else { + month = date.getMonth() === 11 ? 0 : date.getMonth() + 1; + year = month === 0 ? date.getFullYear() + 1 : date.getFullYear(); + } + + date.setMonth(month); + date.setFullYear(year); + renderCalendar(date); +} + +function enabledTodatBtn() { + const current = new Date(); + const isToday = date.getFullYear() === current.getFullYear() + && date.getMonth() === current.getMonth() + && date.getDate() === current.getDate(); + if (isToday) { + document.getElementById('today').setAttribute('disabled', true); + } else { + document.getElementById('today').removeAttribute('disabled'); + } +} + +function setDateInfo() { + const year = date.getFullYear(); + const month = date.getMonth() + 1; + document.getElementById('title').innerText = `${year}年${month}`; + document.getElementById('bg').innerText = month; +} +window.onload = function () { + renderCalendar(date, true); +} + +function changeToToday() { + date = new Date(); + renderCalendar(date); +} + +document.querySelector('.prev').addEventListener('click', function () { changeMonth('prev') }); +document.querySelector('.next').addEventListener('click', function () { changeMonth('next') }); +document.getElementById('today').addEventListener('click', changeToToday) \ No newline at end of file diff --git a/calendar/readme.md b/calendar/readme.md new file mode 100644 index 0000000..0d19888 --- /dev/null +++ b/calendar/readme.md @@ -0,0 +1 @@ +设计稿 [Link](https://js.design/f/88_KC7?p=R5DKFfbG_E) \ No newline at end of file diff --git a/calendar/style.css b/calendar/style.css new file mode 100644 index 0000000..3e34cae --- /dev/null +++ b/calendar/style.css @@ -0,0 +1,134 @@ +* { + margin: 0; +} + +body { + font-family: 'Noto Sans SC', sans-serif; + height: 100vh; + color: #333; + background: linear-gradient(225deg, rgba(255, 154, 158, 1) 0%, rgba(250, 208, 196, 1) 99%, rgba(250, 208, 196, 1) 100%); +} + +li { + list-style: none; +} + +.flex-center { + display: flex; + justify-content: center; + align-items: center; +} + +.calendar { + width: 520px; + padding: 32px; + border-radius: 24px; + background-color: #fff; + box-shadow: 2px 12px 24px rgba(0, 0, 0, 0.12); +} +.button-nav { + display: flex; +} + +header { + display: flex; + align-items: center; + justify-content: space-between; +} + +.button-nav button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.button-nav button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-left: 0; +} +.button-nav button:not(:first-child):not(:last-child) { + border-radius: 0; + border-left: 0; +} +button { + width: 42px; + height: 28px; + display: inline-flex; + justify-content: center; + align-items: center; + border-radius: 16px; + color: #C9C9C9; + background-color: #fff; + border: 1px solid currentColor; + font-size: 18px; + cursor: pointer; +} + +button:active:not(:disabled) { + background-color: rgba(0,0,0,0.06); +} + +button:disabled { + background-color: rgba(0,0,0,0.08); + cursor: not-allowed; + } + + button.today { + width: 64px; + font-size: 12px; + } + + .week { + margin-top: 20px; + display: flex; + } + .week li { + flex: 1; + text-align: center; + color: #B3B3B3; + font-size: 14px; + } + + .content { + min-height: 336px; + margin-top: 12px; + display: grid; + grid-template-columns: repeat(7, auto); + position: relative; + z-index: 1; + } + + .content .bg { + width: 100%; + height: 100%; + color: #EBEBEB; + font-size: 120px; + position: absolute; + z-index: -1; + } + + .date { + height: 56px; + transition: background-color 0.1s ease; + cursor: pointer; + } + + .date:hover { + background: rgba(133, 142, 151, 0.05); + } + + .date-num { + width: 32px; + height: 32px; + border-radius: 8px; + font-size: 14px; + } + .date.active .date-num { + background-color: #117AF2; + color: #fff; + } + + .date.light { + color: #C9C9C9; + } + + From f45b8ce95593510c0799ce07a5066a4a715c20d9 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Mon, 11 Jul 2022 09:56:31 +0000 Subject: [PATCH 16/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@9b4918f7ae1d839ccfc0715fe1eb6540a?= =?UTF-8?q?f8ee782=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calendar/index.js | 2 +- calendar/readme.md | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/calendar/index.js b/calendar/index.js index 470499e..6a4919e 100644 --- a/calendar/index.js +++ b/calendar/index.js @@ -45,7 +45,7 @@ generateCalendar = (date) => { const { days: lastMonthDays, year: lastMonthYear, month: lastMonth } = getNextOrLastMonthDays(date, 'last'); const { year: nextMonthYear, month: nextMonth } = getNextOrLastMonthDays(date, 'next'); // 1号是星期几 - const weekIndex = new Date(`${currentYear}, ${currentMonth + 1}, 1`).getDay(); + const weekIndex = new Date(`${currentYear}/${currentMonth + 1}/1`).getDay(); // 显示在当月末尾的下月天数 const trailDays = calendarGrid - weekIndex - days; let trailVal = 0; diff --git a/calendar/readme.md b/calendar/readme.md index 0d19888..b0b51e6 100644 --- a/calendar/readme.md +++ b/calendar/readme.md @@ -1 +1,4 @@ -设计稿 [Link](https://js.design/f/88_KC7?p=R5DKFfbG_E) \ No newline at end of file +设计稿 [Link](https://js.design/f/88_KC7?p=R5DKFfbG_E) + +## javascript +Date对象在格式化时间时,在safari和chrome上有差别。safari上不能正确识别`2022-1-1`这样短横线连接的时间, 但是对`/`连接的时间可以正确解析, 而chrome则都可以正确解析。同样ios上的safari也有同样的问题,因此兼容写法,日期格式最好是以`/`连接。如: 2022/7/11 12:12:12 \ No newline at end of file From e4cd2d92d5f32b656901e85445b5bed5b9e15014 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Mon, 11 Jul 2022 16:53:15 +0000 Subject: [PATCH 17/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@7b4ab8eb3b6d4b87c6843cbc49817c607?= =?UTF-8?q?c7b059a=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calendar/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/calendar/readme.md b/calendar/readme.md index b0b51e6..6a2977e 100644 --- a/calendar/readme.md +++ b/calendar/readme.md @@ -1,4 +1,4 @@ 设计稿 [Link](https://js.design/f/88_KC7?p=R5DKFfbG_E) ## javascript -Date对象在格式化时间时,在safari和chrome上有差别。safari上不能正确识别`2022-1-1`这样短横线连接的时间, 但是对`/`连接的时间可以正确解析, 而chrome则都可以正确解析。同样ios上的safari也有同样的问题,因此兼容写法,日期格式最好是以`/`连接。如: 2022/7/11 12:12:12 \ No newline at end of file +Date对象在解析时间时,在safari和chrome上,时间格式不同,结果会有差别。safari上不能正确识别`2022-1-1`这样短横线连接的时间, 但是对/连接的时间可以正确解析, 而chrome则都可以正确解析。同样ios上的safari也有同样的问题,因此兼容写法,日期格式最好是以/连接。如: `2022/7/11 12:12:12` \ No newline at end of file From 612635524151f1717b87dda13cd5e322baa53815 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Mon, 11 Jul 2022 16:58:00 +0000 Subject: [PATCH 18/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@b106a1e4885c2b5ed23c015fdf260c47c?= =?UTF-8?q?6d19a4f=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- calendar/index.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 870515f..7d7825a 100644 --- a/README.md +++ b/README.md @@ -12,4 +12,4 @@ | switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | | progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | | avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | -| calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/README.md) | \ No newline at end of file +| calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/readme.md) | \ No newline at end of file diff --git a/calendar/index.js b/calendar/index.js index 6a4919e..95eaa4f 100644 --- a/calendar/index.js +++ b/calendar/index.js @@ -102,7 +102,6 @@ function renderCalendar(date = new Date(), create = false) { const today = new Date(); enabledTodatBtn(); setDateInfo(); - console.log(calendarData); const content = document.getElementById('content'); // 动态创建标签,初始化时调用 if (create) { From 95e99afdd54ab5fdea24d79338cdde6791d3153a Mon Sep 17 00:00:00 2001 From: CiroLee Date: Wed, 13 Jul 2022 18:41:41 +0000 Subject: [PATCH 19/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@0b16f84ce443c45299d30e031a3b59a1d?= =?UTF-8?q?b816d0d=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- notes/README.md | 1 + notes/index.html | 23 ++++++++ notes/index.js | 84 ++++++++++++++++++++++++++ notes/style.css | 150 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 260 insertions(+), 1 deletion(-) create mode 100644 notes/README.md create mode 100644 notes/index.html create mode 100644 notes/index.js create mode 100644 notes/style.css diff --git a/README.md b/README.md index 7d7825a..bf7320a 100644 --- a/README.md +++ b/README.md @@ -12,4 +12,5 @@ | switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | | progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | | avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | -| calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/readme.md) | \ No newline at end of file +| calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/readme.md) | +| Notes | [Link](https://cirolee.github.io/html_css_javascript/notes/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/notes/README.md) | \ No newline at end of file diff --git a/notes/README.md b/notes/README.md new file mode 100644 index 0000000..172b61a --- /dev/null +++ b/notes/README.md @@ -0,0 +1 @@ +设计稿 [Link](https://js.design/f/XJtiP7?p=-qs48UFHCd) \ No newline at end of file diff --git a/notes/index.html b/notes/index.html new file mode 100644 index 0000000..553a837 --- /dev/null +++ b/notes/index.html @@ -0,0 +1,23 @@ + + + + + + + Notes + + + + + + + + +
    +
    + + + \ No newline at end of file diff --git a/notes/index.js b/notes/index.js new file mode 100644 index 0000000..19268ec --- /dev/null +++ b/notes/index.js @@ -0,0 +1,84 @@ +const createBtn = document.getElementById('create-btn'); +const notesContainer = document.querySelector('.notes'); +// 新增id, 采取当前列表id递增方式 +function nextId() { + const parent = document.querySelector('.notes'); + const children = parent.children; + if (!children.length) { + return 1; + } + const ids = Array.from(children).map(el => el.getAttribute('id').split('-')[1]); + return Math.max(...ids) + 1; +} +// 删除便签 +function deleteNote(id) { + const _id = `note-${id}`; + const node = document.getElementById(_id); + notesContainer.removeChild(node); + localStorage.removeItem(_id); +} +// 随机生成皮肤类型 +function randomNoteColor() { + const arr = ['pink', 'green', 'yellow', 'blue']; + const random = Math.floor(Math.random() * arr.length); + return arr[random]; +} +// blur时自动保存 +function textareaBlur(event, id, type) { + const json = { + type, + text: event.target.innerText, + } + localStorage.setItem(`note-${id}`, JSON.stringify(json)); +} +// 渲染便签 +function renderNotes() { + const notes = Object.entries(localStorage).map(([key, value]) => ({ key, value: JSON.parse(value)})).sort((a, b) => a.key.replace('note-', '') - b.key.replace('note-', '')); + const fragment = document.createDocumentFragment(); + notes.forEach(item => { + const note = createNote(item.key.replace('note-', ''), item.value.type, item.value.text); + fragment.appendChild(note); + }); + + notesContainer.appendChild(fragment); +} +// 创建便签 +function createNote(id, type, text = '') { + const note = document.createElement('div'); + const content = document.createElement('div'); + note.setAttribute('id', `note-${id}`); + note.classList.add('note'); + note.classList.add(type); + + // header + const header = document.createElement('header'); + const headerChildren = ` + note-${id} +
    + +
    + `; + header.innerHTML = headerChildren; + // content + content.classList.add('content'); + content.innerHTML = ` +
    ${text}
    + ` + + note.appendChild(header); + note.appendChild(content); + + return note; +} + + +createBtn.addEventListener('click', function() { + const newId = nextId(); + const type = randomNoteColor(); + + const note = createNote(newId, type); + notesContainer.appendChild(note); + document.querySelector(`#note-${newId} .textarea`).focus(); +}); + +window.onload = renderNotes(); \ No newline at end of file diff --git a/notes/style.css b/notes/style.css new file mode 100644 index 0000000..1d7380d --- /dev/null +++ b/notes/style.css @@ -0,0 +1,150 @@ +* { + margin: 0; + box-sizing: border-box; +} + +body { + height: 100vh; + padding: 18px; + font-family: Nato Sans sans-serif; + background: linear-gradient(180deg, rgba(230, 233, 240, 1) 0%, rgba(238, 241, 245, 1) 100%); +} + +.flex-center { + display: flex; + align-items: center; + justify-content: center; +} + +/* button */ +.create-btn { + width: 100px; + height: 44px; + border-radius: 12px; + border: 0; + display: inline-flex; + align-items: center; + justify-content: center; + background-color: #0FB86E; + color: #fff; + cursor: pointer; + font-size: 14px; + box-shadow: 0 2px 0 #0c995b; +} + +.create-btn i { + font-size: 24px; +} + +.create-btn:active { + opacity: 0.85; +} + +/* notes */ +.notes { + margin-top: 20px; + font-size: 0; + +} + +.note { + display: inline-block; + width: calc(25% - 12px); + min-height: 120px; + border-radius: 18px; + margin-right: 12px; + margin-bottom: 18px; + vertical-align: top; +} +.note header { + display: flex; + height: 48px; + padding: 0 16px; + justify-content: space-between; + align-items: center; + border-bottom: 1px solid; +} + +/* note.pink */ +.note.pink { + background-color: #FCACAC; + color: #8F6161; + box-shadow: 3px 8px 18px -4px rgba(252, 172, 172, 0.88); +} + +.note.pink header { + border-color: rgba(143, 97, 97, 0.32); +} +/* note.green */ +.note.green { + background-color: #8FF7A1; + color: #4F8A59; + box-shadow: 3px 8px 18px -4px rgba(143, 247, 161, 0.88); +} + +.note.green header { + border-color: rgba(83, 143, 93, 0.32); +} + +.note.yellow { + background-color: #FFD980; + color: #8F7A48; + box-shadow: 3px 8px 18px -4px rgba(255, 217, 128, 0.88); +} + +.note.yellow header { + border-color: rgba(143, 122, 72, 0.32); +} + +/* note.blue */ +.note.blue { + background-color: #3DCCFC; + color: #23748F; + box-shadow: 3px 8px 18px -4px rgba(61, 204, 252, 0.88); +} + +.note.blue header { + border-color: rgba(35, 116, 143, 0.32); +} + +.note .title { + font-size: 16px; + font-weight: bold; +} + +.close-btn { + font-size: 20px; + cursor: pointer; +} +.content { + padding: 12px 16px 20px; + position: relative; +} + +.textarea { + min-height: 30px; + width: 100%; + border: 0; + outline: 0; + margin: 0; + font-size: 14px; + background-color: transparent; +} + +@media screen and (max-width: 960px) { + .note { + width: calc(33% - 12px); + } +} + +@media screen and (max-width: 720px) { + .note { + width: calc(50% - 12px); + } +} + +@media screen and (max-width: 414px) { + .note { + width: 100%; + } +} From 87a20ae74f18bede6f2e893fa80630248a22ee39 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Sat, 16 Jul 2022 12:26:27 +0000 Subject: [PATCH 20/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@178f8a0a6be758e1351fdadc547a281fa?= =?UTF-8?q?f11d9f5=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- drawing/img/eraser-fill.svg | 1 + drawing/img/pencil-black.svg | 1 + drawing/index.html | 42 +++++++++++ drawing/index.js | 119 ++++++++++++++++++++++++++++++ drawing/style.css | 137 +++++++++++++++++++++++++++++++++++ 6 files changed, 302 insertions(+), 1 deletion(-) create mode 100644 drawing/img/eraser-fill.svg create mode 100644 drawing/img/pencil-black.svg create mode 100644 drawing/index.html create mode 100644 drawing/index.js create mode 100644 drawing/style.css diff --git a/README.md b/README.md index bf7320a..1fa75af 100644 --- a/README.md +++ b/README.md @@ -13,4 +13,5 @@ | progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | | avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | | calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/readme.md) | -| Notes | [Link](https://cirolee.github.io/html_css_javascript/notes/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/notes/README.md) | \ No newline at end of file +| Notes | [Link](https://cirolee.github.io/html_css_javascript/notes/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/notes/README.md) | +| canvasBoard | [Link](https://cirolee.github.io/html_css_javascript/drawing/) | | \ No newline at end of file diff --git a/drawing/img/eraser-fill.svg b/drawing/img/eraser-fill.svg new file mode 100644 index 0000000..c3234d7 --- /dev/null +++ b/drawing/img/eraser-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/drawing/img/pencil-black.svg b/drawing/img/pencil-black.svg new file mode 100644 index 0000000..67bed00 --- /dev/null +++ b/drawing/img/pencil-black.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/drawing/index.html b/drawing/index.html new file mode 100644 index 0000000..2237e57 --- /dev/null +++ b/drawing/index.html @@ -0,0 +1,42 @@ + + + + + + + Drawing + + + + + +
    +
  • +
  • +
  • +
  • +
  • +
  • +
    +
    + + + \ No newline at end of file diff --git a/drawing/index.js b/drawing/index.js new file mode 100644 index 0000000..6c30760 --- /dev/null +++ b/drawing/index.js @@ -0,0 +1,119 @@ +const canvas = document.getElementById('canvas'); +const ctx = canvas.getContext('2d'); +let startPos = { x: undefined, y: undefined }; +let isPainting = false; +let isErasering = false; +let brushColor = '#F50C0C'; +let action = 'draw'; + +function initCanvas() { + canvas.width = document.documentElement.offsetWidth; + canvas.height = document.documentElement.offsetHeight; + enableDownload(canvas); +} +// 初始化canvas +initCanvas(); + +// canvas操作 - 画线 +function drawLine({ startX, startY, endX, endY, color = brushColor }) { + //开始绘制 + ctx.beginPath(); + //线宽 + ctx.lineWidth = 2; + // 线颜色 + ctx.strokeStyle = color; + ctx.lineCap = 'round'; + //起始位置 + ctx.moveTo(startX, startY); + //停止位置 + ctx.lineTo(endX, endY); + //描绘线路 + ctx.stroke(); + //结束绘制 + ctx.closePath(); +} +// 监听canvas鼠标事件 +// 1. mousedwn 确定起始坐标,准备绘制 +canvas.addEventListener('mousedown', function (event) { + startPos.x = event.offsetX; + startPos.y = event.offsetY; + isPainting = true; +}); +// 2. 监听鼠标移动,绘制图形 or 擦除 +canvas.addEventListener('mousemove', function (event) { + const endX = event.offsetX; + const endY = event.offsetY; + + if (isPainting && typeof startPos.x === 'number' && typeof startPos.y === 'number') { + if (isErasering && action === 'eraser') { + ctx.clearRect(endX - 5, endY - 5, 25, 25); + } else if (!isErasering && action === 'draw') { + drawLine({ + startX: startPos.x, + startY: startPos.y, + endX, + endY, + color: brushColor, + }); + startPos.x = endX; + startPos.y = endY; + } + } +}); +// 监听鼠标抬起, 结束绘制 +canvas.addEventListener('mouseup', function () { + isPainting = false; + startPos = {x: undefined, y: undefined }; + enableDownload(canvas); +}); + +function enableDownload(canvas) { + const a = document.getElementById('download'); + a.href = canvas.toDataURL(); +} + +// 画笔/橡皮切换 +document.getElementById('pencil').addEventListener('click', function () { + action = 'draw'; + isErasering = false; + isPainting = true; + document.getElementById('canvas').className = action; + this.classList.add('active'); + document.getElementById('eraser').classList.remove('active'); +}); +document.getElementById('eraser').addEventListener('click', function () { + action = 'eraser'; + isErasering = true; + isPainting = false; + document.getElementById('canvas').className = action; + this.classList.add('active'); + document.getElementById('pencil').classList.remove('active'); +}); + +// 清除画布 +document.getElementById('delete').addEventListener('click', function () { + ctx.fillStyle = '#f0f0f0'; + ctx.fillRect(0, 0, canvas.width, canvas.height); +}); + +// 打开 or 关闭色板 +function toggleColorPanel() { + const colorPanel = document.getElementById('color-panel'); + if (colorPanel.className.includes('show')) { + colorPanel.classList.remove('show'); + colorPanel.classList.add('hide'); + } else { + colorPanel.classList.remove('hide'); + colorPanel.classList.add('show'); + } +} +document.getElementById('color').addEventListener('click', toggleColorPanel); + +// 选取颜色 +document.getElementById('color-panel').addEventListener('click', function (event) { + if (event.target.nodeName.toLowerCase() === 'li') { + toggleColorPanel(); + brushColor = event.target.dataset.color; + document.getElementById('color').style.setProperty('--selected-color', event.target.dataset.color); + } +}); \ No newline at end of file diff --git a/drawing/style.css b/drawing/style.css new file mode 100644 index 0000000..dea1589 --- /dev/null +++ b/drawing/style.css @@ -0,0 +1,137 @@ +* { + margin: 0; + box-sizing: border-box; +} + +body { + height: 100vh; +} + +li { + list-style: none; +} + +a { + color: #000; + text-decoration: none; +} + +canvas { + position: absolute; + background: #f0f0f0; + cursor: url('./img/pencil-black.svg'), auto; +} + +canvas.eraser { + cursor: url('./img/eraser-fill.svg'), auto; +} + +.tools { + height: 72px; + width: 312px; + border-radius: 36px; + position: absolute; + bottom: 10%; + left: 50%; + padding: 0 12px; + background-color: #fff; + transform: translateX(-50%); + display: flex; + box-shadow: 0px 12px 20px -8px rgb(190 190 190 / 20%); +} + +.tool-item { + width: 64px; + height: 100%; + flex: 1; + display: flex; + justify-content: center; + align-items: center; + font-size: 36px; + cursor: pointer; + transition: all 0.2s ease; +} + +.tool-item .color { + width: 36px; + height: 36px; + border-radius: 50%; + background-color: var(--selected-color); +} + +.tool-item.active { + color: #550af7; + font-size: 42px; + transform: translateY(-8px); +} + +/* panel */ +.panel { + height: 64px; + padding: 8px 12px; + border: 1px solid #eee; + position: absolute; + bottom: 10%; + left: 50%; + transform: translateX(-50%); + display: flex; + align-items: center; + background-color: #fff; + border-radius: 32px; + display: none; + opacity: 0; +} + +.color-panel.show { + display: flex; + animation: show 0.25s linear forwards; +} + +.color-panel.hide { + display: flex; + animation: hide 0.25s linear forwards; +} + +.color-panel li { + width:36px; + height: 36px; + border-radius: 50%; + background-color: var(--color); + cursor: pointer; +} + +.color-panel li:not(:last-child) { + margin-right: 8px; +} + +@keyframes show { + from { + display: flex; + opacity: 0; + } + + 50% { + bottom: 10%; + opacity: 0.5; + } + to { + bottom: 20%; + opacity: 1; + } +} + +@keyframes hide { + from { + opacity: 1; + bottom: 20%; + } + + 50% { + bottom: 10%; + opacity: 0.5; + } + to { + bottom: 10%; + opacity: 0; + } +} From 931435d0d0657416d1743c61da84d4bca1a5e704 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Tue, 19 Jul 2022 14:29:33 +0000 Subject: [PATCH 21/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@0796e5a7877615f3c65fdd192d846551b?= =?UTF-8?q?f626788=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- loading/index.html | 64 ++++++++ loading/style.css | 382 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 448 insertions(+), 1 deletion(-) create mode 100644 loading/index.html create mode 100644 loading/style.css diff --git a/README.md b/README.md index 1fa75af..65a344a 100644 --- a/README.md +++ b/README.md @@ -14,4 +14,5 @@ | avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | | calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/readme.md) | | Notes | [Link](https://cirolee.github.io/html_css_javascript/notes/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/notes/README.md) | -| canvasBoard | [Link](https://cirolee.github.io/html_css_javascript/drawing/) | | \ No newline at end of file +| canvasBoard | [Link](https://cirolee.github.io/html_css_javascript/drawing/) | | +| loading | [Link](https://cirolee.github.io/html_css_javascript/loading/) | | \ No newline at end of file diff --git a/loading/index.html b/loading/index.html new file mode 100644 index 0000000..d9c6940 --- /dev/null +++ b/loading/index.html @@ -0,0 +1,64 @@ + + + + + + + Loading + + + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/loading/style.css b/loading/style.css new file mode 100644 index 0000000..396b8a2 --- /dev/null +++ b/loading/style.css @@ -0,0 +1,382 @@ +* { + margin: 0; + box-sizing: border-box; +} +.flex-center { + display: flex; + justify-content: center; + align-items: center; +} +body { + height: 100vh; + /* background: #8d09bf; */ +} +/* grid宫格 */ +.loading-grid { + display: grid; + /* background: green; */ + grid-template-columns: repeat(3, 240px); + grid-template-rows: repeat(3, 240px); +} + +.loading-grid > div:hover { + transition: transform 0.2s ease; + border: 1px solid #eee; + transform: scale(1.1); + cursor: pointer; +} + +/* two-balls loading START */ +.two-balls { + position: relative; + width: 44px; +} + +.two-balls div { + position: absolute; + top: 0; + width: 20px; + height: 20px; + border-radius: 50%; + animation: two-balls-pink 1.05s ease-in-out infinite +} + +.two-balls .pink { + background-color: #ff4a69; + left: -2px; +} +.two-balls .blue { + animation-name: two-balls-blue; + background-color: #1342ed; + right: -2px; +} + +@keyframes two-balls-pink { + from { + z-index: 1; + } + 50% { + transform: translateX(calc(20px + 3 * 2px)); + } +} + +@keyframes two-balls-blue { + 50% { + transform: translateX(calc(-20px - 3 * 2px)); + } +} +/* two-balls loading END */ +.three-balls-bounce { + position: relative; + width: 200px; + height: 62px; +} +/* three-ball-bounce loading START */ +.three-balls-bounce .circle { + width: 20px; + height: 20px; + position: absolute; + border-radius: 50%; + background-color: #ff4a69; + left: 15%; + transform-origin: 50%; + animation: balls-circle .5s alternate infinite ease; +} + +.three-balls-bounce .shadow { + width: 20px; + height: 4px; + border-radius: 50%; + background-color: rgba(0,0,0,.4); + position: absolute; + top: 62px; + transform-origin: 50%; + z-index: -1; + left: 15%; + filter: blur(1px); + animation: balls-shadow .5s alternate infinite ease; +} +.three-balls-bounce .shadow:nth-child(4), +.three-balls-bounce .circle:nth-child(2){ + left:45%; + animation-delay: .2s; +} +.three-balls-bounce .shadow:nth-child(5), +.three-balls-bounce .circle:nth-child(3){ + left:auto; + right:15%; + animation-delay: .3s; +} + +@keyframes balls-circle { + 0%{ + top:60px; + height:5px; + border-radius: 50px 50px 25px 25px; + transform: scaleX(1.7); + } + 40%{ + height:20px; + border-radius: 50%; + transform: scaleX(1); + } + 100%{ + top:0%; + } +} +@keyframes balls-shadow { + 0%{ + transform: scaleX(1.5); + } + 40%{ + transform: scaleX(1); + opacity: .7; + } + 100%{ + transform: scaleX(.2); + opacity: .4; + } +} + +/* three-ball-bounce loading END */ + +/* four-balls laoding START */ +.four-balls { + height: 50px; + width: 50px; + animation: four-balls-rotate 1s infinite; +} + +.four-balls:before, +.four-balls:after { + border-radius: 50%; + content: ''; + display: block; + height: 20px; + width: 20px; +} +.four-balls:before { + animation: ball1 1s infinite; + background-color: #cb2025; + box-shadow: 30px 0 0 #f8b334; + margin-bottom: 10px; +} +.four-balls:after { + animation: ball2 1s infinite; + background-color: #00a096; + box-shadow: 30px 0 0 #97bf0d; +} + +@keyframes four-balls-rotate { + 0% { + transform: rotate(0deg) scale(0.8); + } + 50% { + transform: rotate(360deg) scale(1.2); + } + 100% { + transform: rotate(720deg) scale(0.8); + } +} + +@keyframes ball1 { + 0% { + box-shadow: 30px 0 0 #f8b334; + } + 50% { + box-shadow: 0 0 0 #f8b334; + margin-bottom: 0; + transform: translate(15px,15px); + } + 100% { + box-shadow: 30px 0 0 #f8b334; + margin-bottom: 10px; + } +} + +@keyframes ball2 { + 0% { + box-shadow: 30px 0 0 #97bf0d; + } + 50% { + box-shadow: 0 0 0 #97bf0d; + margin-top: -20px; + transform: translate(15px,15px); + } + 100% { + box-shadow: 30px 0 0 #97bf0d; + margin-top: 0; + } +} +/* four-balls laoding END */ + +/* cube-box loading START */ +.outer-box { + width: 3em; + height: 3em; + animation: cube-box-ani 1s infinite ease-in-out; + outline: 1px solid transparent; +} + +.large-box { + height: 3em; + width: 3em; + background-color: #ff4a69; + outline: 1px solid transparent; +} + +.small-box { + height: 3em; + width: 3em; + background-color: white; + z-index: 1; + outline: 1px solid transparent; + animation: small-box-ani 1s alternate infinite ease-in-out; +} + +@keyframes small-box-ani { + 0% {transform: scale(0.2);} + 100% {transform: scale(0.75);} +} + +@keyframes cube-box-ani { + 0% {transform: rotate(0deg);} + 100% {transform: rotate(90deg);} +} + +/* cube-box loading END */ + +/* circle loading START */ +.ring { + width: 48px; + height: 48px; + border: 6px rgb(255 74 105 / 25%) solid; + border-top: 6px #ff4a69 solid; + border-radius: 50%; + animation: spin 0.6s infinite linear; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} +/* circle loading END */ + +/* slices loading START */ +.slices { + width: 48px; + height: 48px; + border-radius: 50%; + border-top: 24px rgb(255 74 105 / 75%) solid; + border-left: 24px rgb(255 74 105 / 25%) solid; + border-bottom: 24px rgb(255 74 105 / 25%) solid; + border-right: 24px rgb(255 74 105 / 25%) solid; + animation: slices 1s infinite linear; +} + +@keyframes slices { + 0% { + border-top: 24px rgb(255 74 105 / 75%) solid; + border-right: 24px rgb(255 74 105 / 25%) solid; + border-bottom: 24px rgb(255 74 105 / 25%) solid; + border-left: 24px rgb(255 74 105 / 25%) solid; + } + 25% { + border-top: 24px rgb(255 74 105 / 25%) solid; + border-right: 24px rgb(255 74 105 / 75%) solid; + border-bottom: 24px rgb(255 74 105 / 25%) solid; + border-left: 24px rgb(255 74 105 / 25%) solid; + } + 50% { + border-top: 24px rgb(255 74 105 / 25%) solid; + border-right: 24px rgb(255 74 105 / 25%) solid; + border-bottom: 24px rgb(255 74 105 / 75%) solid; + border-left: 24px rgb(255 74 105 / 25%) solid; + } + 75% { + border-top: 24px rgb(255 74 105 / 25%) solid; + border-right: 24px rgb(255 74 105 / 25%) solid; + border-bottom: 24px rgb(255 74 105 / 25%) solid; + border-left: 24px rgb(255 74 105 / 75%) solid; + } + 100% { + border-top: 24px rgb(255 74 105 / 75%) solid; + border-right: 24px rgb(255 74 105 / 25%) solid; + border-bottom: 24px rgb(255 74 105 / 25%) solid; + border-left: 24px rgb(255 74 105 / 25%) solid; + } +} +/* slices loading END */ + +/* hydrogen loading START */ +.hydrogen { + width: 48px; + height: 48px; + position: relative; + border: 1px #000 dotted; + border-radius: 50%; + animation: spin 1s infinite linear; +} +.hydrogen::after, +.hydrogen::before { + content: ''; + position: absolute; + width: 16px; + height: 16px; + background-color: #000; + border-radius: 50%; + top: calc(50% - 8px); + left: calc(50% - 8px); +} +.hydrogen::after { + top: 2px; + left: 2px; + width: 10px; + height: 10px; +} +/* hydrogen loading END */ + +/* recting loading START */ +.recting .polygon { + fill: none; + stroke-width: 8px; + stroke: black; + stroke-dasharray: 40; + stroke-dashoffset: 50%; + animation: recting 1.5s forwards infinite; +} + +@keyframes recting { + to { + stroke-dashoffset: 250%; + } +} +/* recting loading END */ + +/* switch-box loading START */ +.switch-box { + position: relative; + height: 80px; + animation: spin 2s infinite linear; +} + +.switch-box .switch { + position: absolute; + top: 50%; + margin-top: -10px; + width: 20px; + height: 20px; + background: #000; + border-radius: 20px; + animation: cross 2s infinite linear; +} + +.switch-box .switch:nth-of-type(2) { + animation-delay: -1s; +} + +@keyframes cross { + 50% { + margin-left: 60px; + } +} +/* switch-box loading END */ \ No newline at end of file From 7d25c86c3e0f70d3ec293639e185818dd7cc5158 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Wed, 20 Jul 2022 07:55:03 +0000 Subject: [PATCH 22/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@31972403730f76a6699728c7b0c0d5301?= =?UTF-8?q?52b9171=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calendar/index.html | 131 -------------------------------------------- 1 file changed, 131 deletions(-) diff --git a/calendar/index.html b/calendar/index.html index 4711b63..635fd08 100644 --- a/calendar/index.html +++ b/calendar/index.html @@ -37,137 +37,6 @@
    - From 47cb178234578fc5b300c286a05a250ea3aaed37 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Fri, 22 Jul 2022 17:34:09 +0000 Subject: [PATCH 23/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@f27da82a44a7ec6d2e07f6fe423e01a3f?= =?UTF-8?q?8bc0f14=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- shape/README.md | 8 +++ shape/index.html | 112 ++++++++++++++++++++++++++++++++++ shape/index.js | 48 +++++++++++++++ shape/style.css | 155 +++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 325 insertions(+), 1 deletion(-) create mode 100644 shape/README.md create mode 100644 shape/index.html create mode 100644 shape/index.js create mode 100644 shape/style.css diff --git a/README.md b/README.md index 65a344a..f29ce88 100644 --- a/README.md +++ b/README.md @@ -15,4 +15,5 @@ | calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/readme.md) | | Notes | [Link](https://cirolee.github.io/html_css_javascript/notes/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/notes/README.md) | | canvasBoard | [Link](https://cirolee.github.io/html_css_javascript/drawing/) | | -| loading | [Link](https://cirolee.github.io/html_css_javascript/loading/) | | \ No newline at end of file +| loading | [Link](https://cirolee.github.io/html_css_javascript/loading/) | | +| shape | [Link](https://cirolee.github.io/html_css_javascript/shape/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/README.md) | \ No newline at end of file diff --git a/shape/README.md b/shape/README.md new file mode 100644 index 0000000..5c5da76 --- /dev/null +++ b/shape/README.md @@ -0,0 +1,8 @@ +# css +clip-path: 创建裁剪区域,显示区域内的部分。 +clip-path: circle(radius at x y) 创建圆形选区 +clip-path: ellipse(a b at x y) 创建椭圆(a, b为长短轴,a: x轴上距离中心点的距离, b: y轴上距离中心点的距离) +clip-path: polugon(10px 20px, 10px 10px, ....) 创建任意多边形, 参数为点坐标 +clip-path: path() 对应svg中的path属性 + +[More](https://developer.mozilla.org/zh-CN/docs/Web/CSS/clip-path) \ No newline at end of file diff --git a/shape/index.html b/shape/index.html new file mode 100644 index 0000000..bc5aca4 --- /dev/null +++ b/shape/index.html @@ -0,0 +1,112 @@ + + + + + + + shape + + + +
    +
  • +
    +

    圆形

    +
  • +
  • +
    +

    扇形

    +
  • +
  • +
    +

    椭圆

    +
  • +
    +
    +

    吃豆人

    +
    +
    +
    +

    正三角形

    +
    +
    +
    +

    直角三角形

    +
    +
    +
    +

    等腰梯形

    +
    +
    +
    +

    直角梯形-1

    +
    +
    +
    +

    平行四边形

    +
    +
    +
    +

    菱形

    +
    +
    +
    +

    钻石

    +
    +
    +
    +

    五角星

    +
    +
    +
    +

    半星

    +
    +
    +
    +

    斜切角

    +
    +
    +
    +

    正切角

    +
    +
    +
    +

    正六边形

    +
    +
    +
    +

    十字

    +
    +
    +
    +

    close

    +
    +
    +
    +

    箭头

    +
    +
    +
    +

    标签

    +
    +
    +
    +
    + + 80 +
    +
    +
  • +
  • +
  • +
  • +
  • +
  • +
    +
    +      
    +    
    +
    + + + \ No newline at end of file diff --git a/shape/index.js b/shape/index.js new file mode 100644 index 0000000..3dab288 --- /dev/null +++ b/shape/index.js @@ -0,0 +1,48 @@ +const grid = document.getElementById('grid'); +const code = document.querySelector('#code code'); +const range = document.getElementById('range'); +const colorPanel = document.getElementById('color-panel'); + +// 选色 +colorPanel.addEventListener('click', function(event) { + if (event.target.nodeName.toLowerCase() === 'li') { + document.documentElement.style.setProperty('--color', event.target.dataset.color); + } +}) +// 滑块滑动事件 +range.addEventListener('input', function(event) { + document.documentElement.style.setProperty('--size', `${event.target.value}px`); + this.nextElementSibling.innerText = event.target.value; +}) +// 获取元素的css属性 +function getShapeElementProperties(el) { + const className = el.className.split(' ')[1]; + const computedStyle = getComputedStyle(el); + let pseudoStyle = ''; + const shapeStyle = ` + .${className} { + width: ${computedStyle.getPropertyValue('width')}; + height: ${computedStyle.getPropertyValue('height')}; + border-radius: ${computedStyle.getPropertyValue('border-radius')}; + background-color: ${computedStyle.getPropertyValue('background-color')}; + clip-path: ${computedStyle.getPropertyValue('clip-path')}; + }`; + if (className.includes('half-star')) { + const styleWithPseudo = getComputedStyle(el, '::after'); + pseudoStyle = ` + .${className}::after { + content: ''; + position: 'absolute'; + width: ${styleWithPseudo.getPropertyValue('width')}; + height: ${styleWithPseudo.getPropertyValue('height')}; + background-color: ${styleWithPseudo.getPropertyValue('background-color')}; + }` + } + return shapeStyle + '\n' + pseudoStyle; +} +grid.addEventListener('click', function(event) { + if(event.target.className.includes('shape')) { + let codeStr = getShapeElementProperties(event.target); + code.innerHTML = codeStr; + } +}) \ No newline at end of file diff --git a/shape/style.css b/shape/style.css new file mode 100644 index 0000000..32a8884 --- /dev/null +++ b/shape/style.css @@ -0,0 +1,155 @@ +* { + margin: 0; +} + +:root { + --size: 80px; + --color: #F50C0C; +} + +body { + /* height: 100vh; */ + display: flex; + padding: 30px 0; + /* align-items: center; */ +} + +li { + list-style: none; +} + +.flex-center { + display: flex; + justify-content: center; + align-items: center; +} +.flex-column { + flex-direction: column; +} +.text { + font-size: 14px; + color: #333; + margin-top: 4px; +} + +.grid-container { + display: grid; + grid-template-columns: repeat(5, 160px); + grid-template-rows: repeat(4, 160px); + margin-left: 6%; +} + +.shape { + width: var(--size); + height: var(--size); + background-color: var(--color); + cursor: pointer; +} + +.side { + margin-left: 12px; +} + +pre { + width: 320px; + background-color: #bcbcbc; + padding: 12px; + border-radius: 8px; +} +code { + white-space: break-spaces; +} +.color-panel { + display: flex; + margin: 12px 0; +} +.color-panel li { + width: 30px; + height: 30px; + border-radius: 50%; + background-color: var(--color); + margin-right: 4px; + cursor: pointer; +} + +input[type=range] { + width: 280px; +} + +/* shape css */ +.circle { + clip-path: circle(50% at 50% 50%); +} + +.sector { + border-radius: 50%; + clip-path: polygon(0 0, 100% 0, 50% 50%); +} + +.ellipse { + clip-path: ellipse(50% 33% at 50% 50%); +} +.pac-man { + border-radius: 50%; + clip-path: polygon(0 0, 100% 0, 50% 50%, 100% 100%, 0 100%); +} +.triangle { + clip-path: polygon(50% 0, 0 100%, 100% 100%); +} +.ri-triangle { + clip-path: polygon(0 0, 0 100%, 100% 100%); +} +.ladder { + clip-path: polygon(20% 0, 80% 0, 100% 100%, 0 100%); +} + +.ri-ladder { + clip-path: polygon(0 0, 35% 0, 100% 100%, 0 100%); +} +.parallelogram { + clip-path: polygon(25% 0, 100% 0, 75% 100%, 0 100%); +} + +.rhombus { + clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); +} +.diamond { + clip-path: polygon(80% 0, 100% 30%, 50% 100%, 0 30%, 20% 0); +} +.star { + clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);; +} + +.half-star { + position: relative; + background-color: #f7f7f7; + clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);; +} +.half-star::after { + content: ''; + width: 50%; + height: 100%; + background: var(--color); + position: absolute; +} +.bevel { + clip-path: polygon(20% 0%, 80% 0%, 100% 20%, 100% 80%, 80% 100%, 20% 100%, 0% 80%, 0% 20%); +} +.rabbet { + clip-path: polygon(0% 15%, 15% 15%, 15% 0%, 85% 0%, 85% 15%, 100% 15%, 100% 85%, 85% 85%, 85% 100%, 15% 100%, 15% 85%, 0% 85%); +} +.hexagon { + clip-path: polygon(25% 0, 75% 0, 100% 25%, 100% 75%, 75% 100%, 25% 100%, 0 75%, 0 25%); +} +.cross { + clip-path:polygon(0 35%, 35% 35%, 35% 0, 65% 0, 65% 35%, 100% 35%, 100% 65%, 65% 65%, 65% 100%, 35% 100%, 35% 65%, 0 65%); +} +.close { + clip-path: polygon(20% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50% 70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%); +} +.arrow-left { + clip-path: polygon(50% 0%, 50% 30%, 100% 30%, 100% 70%, 50% 70%, 50% 100%, 0% 50%); +} +.tag { + clip-path: polygon(30% 15%, 100% 15%, 100% 85%, 30% 85%, 0% 50%); +} \ No newline at end of file From 719154e23a180db315288ad145948af2d944b586 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Fri, 22 Jul 2022 17:43:56 +0000 Subject: [PATCH 24/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@d64a93f85f9cbbe2e716c82218991ca26?= =?UTF-8?q?da201d9=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f29ce88..2cc08d6 100644 --- a/README.md +++ b/README.md @@ -16,4 +16,4 @@ | Notes | [Link](https://cirolee.github.io/html_css_javascript/notes/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/notes/README.md) | | canvasBoard | [Link](https://cirolee.github.io/html_css_javascript/drawing/) | | | loading | [Link](https://cirolee.github.io/html_css_javascript/loading/) | | -| shape | [Link](https://cirolee.github.io/html_css_javascript/shape/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/README.md) | \ No newline at end of file +| shape | [Link](https://cirolee.github.io/html_css_javascript/shape/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/shape/README.md) | \ No newline at end of file From d8b485d8e6884bbbcc58556eef95b6dfae1f11a3 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Thu, 28 Jul 2022 14:07:48 +0000 Subject: [PATCH 25/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@75d1ca59d77f5dc08d5d29e2ea6ac8acf?= =?UTF-8?q?1d6045f=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- toss_icons/README.md | 7 +++ toss_icons/icon.mp3 | Bin 0 -> 53582 bytes toss_icons/img/icon-back.png | Bin 0 -> 54482 bytes toss_icons/img/icon-up.png | Bin 0 -> 56234 bytes toss_icons/index.html | 24 +++++++ toss_icons/index.js | 30 +++++++++ toss_icons/style.css | 119 +++++++++++++++++++++++++++++++++++ 8 files changed, 182 insertions(+), 1 deletion(-) create mode 100644 toss_icons/README.md create mode 100644 toss_icons/icon.mp3 create mode 100644 toss_icons/img/icon-back.png create mode 100644 toss_icons/img/icon-up.png create mode 100644 toss_icons/index.html create mode 100644 toss_icons/index.js create mode 100644 toss_icons/style.css diff --git a/README.md b/README.md index 2cc08d6..a25ecc5 100644 --- a/README.md +++ b/README.md @@ -16,4 +16,5 @@ | Notes | [Link](https://cirolee.github.io/html_css_javascript/notes/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/notes/README.md) | | canvasBoard | [Link](https://cirolee.github.io/html_css_javascript/drawing/) | | | loading | [Link](https://cirolee.github.io/html_css_javascript/loading/) | | -| shape | [Link](https://cirolee.github.io/html_css_javascript/shape/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/shape/README.md) | \ No newline at end of file +| shape | [Link](https://cirolee.github.io/html_css_javascript/shape/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/shape/README.md) | +| toss_icons | [Link](https://cirolee.github.io/html_css_javascript/toss_icons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/toss_icons/README.md) | \ No newline at end of file diff --git a/toss_icons/README.md b/toss_icons/README.md new file mode 100644 index 0000000..03c2644 --- /dev/null +++ b/toss_icons/README.md @@ -0,0 +1,7 @@ +# css +1. transform-style: 设置元素的子元素是位于 3D 空间中还是平面中。 +transform-style: flat 平面空间(默认) +transform-style: preserve-3d 3D空间 +2. backface-visibility: 指定当元素背面朝向观察者时是否可见。面向观察者通常指的是面向屏幕,也就是用户正面看到屏幕。这个属性在2d中不可见,只在3d空间中可见。因为我们设置硬币的正反面两个元素, 当元素处于背面时(翻转过去了), 应该是看不到的,所以要设置hidden +backface-visibility: visible 可见 +backface-visibility: hidden 不可见 diff --git a/toss_icons/icon.mp3 b/toss_icons/icon.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..9c01e9f354e57da328b654d82350be993296e475 GIT binary patch literal 53582 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 G3j7-=^?ptO literal 0 HcmV?d00001 diff --git a/toss_icons/img/icon-back.png b/toss_icons/img/icon-back.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a63d458f4196b7eacac2111ef2645a3bd7c41e GIT binary patch literal 54482 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

    O?N6Du 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 + + + + + + + toss icons + + + + +

    +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/toss_icons/index.js b/toss_icons/index.js new file mode 100644 index 0000000..ba16f8e --- /dev/null +++ b/toss_icons/index.js @@ -0,0 +1,30 @@ +const playBtn = document.getElementById('play'); +const audio = document.getElementById('audio'); +const iconBox = document.getElementById('icon-box'); +const iconBack = document.querySelector('.icon-back'); +const result = document.getElementById('result'); +function tossResult() { + // 随机获取0或1 + const random = Math.floor(Math.random() * 2); + if (!random) { + iconBack.classList.remove('back'); + result.innerText = '反'; + } else { + iconBack.classList.add('back'); + result.innerText = '正'; + } + + result.classList.add('show'); + +} +playBtn.addEventListener('click', function() { + audio.play(); + iconBox.classList.add('toss'); + // reset + iconBack.classList.add('back'); + result.classList.remove('show'); + iconBox.addEventListener('animationend', function() { + this.classList.remove('toss'); + tossResult(); + }) +}); \ No newline at end of file diff --git a/toss_icons/style.css b/toss_icons/style.css new file mode 100644 index 0000000..4c49814 --- /dev/null +++ b/toss_icons/style.css @@ -0,0 +1,119 @@ +* { + margin: 0; +} + +body { + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + background-image: linear-gradient(to top, #dfe9f3 0%, white 100%); +} +.icon-box { + width: 100px; + height: 100px; + position: relative; +} + +.box { + height: 100%; + position: relative; + transform-style: preserve-3d; +} + +.icon { + width: 100%; + height: 100%; + left: 0; + top: 0; + position: absolute; + background-position: center; + background-repeat: no-repeat; + background-size: 100% auto; + backface-visibility: hidden; +} + +.icon-up { + background-image: url('./img/icon-up.png'); +} + +.icon-back { + background-image: url('./img/icon-back.png'); +} +.icon-back.back { + transform: rotateX(180deg); +} + +.icon-box.toss { + animation: up-down 1.5s ease-in-out both; +} +.icon-box.toss .box { + animation: toss 0.6s linear infinite; +} + + +@keyframes up-down { + from { + transform: translateY(0); + } + 40%, + 70% + { + transform: translateY(-240px); + } + to { + transform: translateY(0); + } +} + +@keyframes toss { + from { + transform: rotateX(0deg); + } + + to { + transform: rotateX(1080deg); + } +} + +button { + margin-top: 40px; + width: 140px; + height: 52px; + border: 0; + color: #fff; + border-radius: 4px; + font-size: 18px; + background-color: #e67e22; + cursor: pointer; + box-shadow: 0 5px 0 0 #d35400; + transition: all 0.15s linear; +} + +button:active { + transform: translateY(5px); + box-shadow: 0 3px 0 0 #d35400; +} + +.result { + width: 60px; + height: 60px; + border-radius: 12px; + background-color: #e67e22; + margin-bottom: 100px; + color: #fff; + font-size: 16px; + font-weight: bold; + display: inline-flex; + justify-content: center; + align-items: center; + opacity: 0; + transform: scale(0.1); + transition: all 0.2s ease-in-out; +} + +.result.show { + opacity: 1; + transform: scale(1); +} \ No newline at end of file From d24f4638a151718ad3a0137113bfedbc7f6b172f Mon Sep 17 00:00:00 2001 From: CiroLee Date: Fri, 29 Jul 2022 17:23:09 +0000 Subject: [PATCH 26/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@1fdc9e38e2ce4775f5ff1d0011a541cb8?= =?UTF-8?q?f8c7096=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index a25ecc5..62c4208 100644 --- a/README.md +++ b/README.md @@ -2,19 +2,23 @@ > 使用生动实用的例子, 抛离框架, 适合刚入门的开发者练习。 +> Use vivid and practical examples, without frameworks, suitable for developers who are just getting started. + ## List -| 名称 | Live Demo | Notes | -| -------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | -| coupon | [Link](https://cirolee.github.io/html_css_javascript/coupons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/coupons/README.md) | -| sidemenu | [Link](https://cirolee.github.io/html_css_javascript/sidemenu/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/sidemenu/README.md) | -| switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | -| progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | -| avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | -| calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/readme.md) | -| Notes | [Link](https://cirolee.github.io/html_css_javascript/notes/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/notes/README.md) | -| canvasBoard | [Link](https://cirolee.github.io/html_css_javascript/drawing/) | | -| loading | [Link](https://cirolee.github.io/html_css_javascript/loading/) | | -| shape | [Link](https://cirolee.github.io/html_css_javascript/shape/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/shape/README.md) | -| toss_icons | [Link](https://cirolee.github.io/html_css_javascript/toss_icons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/toss_icons/README.md) | \ No newline at end of file +| 名称 | Live Demo | Notes | +|-------------|-------------------------------------------------------------------|-----------------------------------------------------------------------------------------| +| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | +| coupon | [Link](https://cirolee.github.io/html_css_javascript/coupons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/coupons/README.md) | +| sidemenu | [Link](https://cirolee.github.io/html_css_javascript/sidemenu/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/sidemenu/README.md) | +| switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | +| progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | +| avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | +| calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/readme.md) | +| Notes | [Link](https://cirolee.github.io/html_css_javascript/notes/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/notes/README.md) | +| canvasBoard | [Link](https://cirolee.github.io/html_css_javascript/drawing/) | | +| loading | [Link](https://cirolee.github.io/html_css_javascript/loading/) | | +| shape | [Link](https://cirolee.github.io/html_css_javascript/shape/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/shape/README.md) | + + +#### [Bilibili](https://space.bilibili.com/470243907) \ No newline at end of file From da6af5f4b4aa8bd1c93e28e1839284b47ea78cdd Mon Sep 17 00:00:00 2001 From: CiroLee Date: Fri, 29 Jul 2022 18:37:01 +0000 Subject: [PATCH 27/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@de5177d267019bdcac42ea58413c72699?= =?UTF-8?q?30a68e4=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 62c4208..952eb68 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # html_css_javascript -> 使用生动实用的例子, 抛离框架, 适合刚入门的开发者练习。 +> 使用生动实用的例子, 抛离框架, 适合刚入门的开发者练习。 > Use vivid and practical examples, without frameworks, suitable for developers who are just getting started. @@ -19,6 +19,6 @@ | canvasBoard | [Link](https://cirolee.github.io/html_css_javascript/drawing/) | | | loading | [Link](https://cirolee.github.io/html_css_javascript/loading/) | | | shape | [Link](https://cirolee.github.io/html_css_javascript/shape/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/shape/README.md) | - +| toss_icons | [Link](https://cirolee.github.io/html_css_javascript/toss_icons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/toss_icons/README.md) | #### [Bilibili](https://space.bilibili.com/470243907) \ No newline at end of file From 043b5fe27b88825b108219f42776d8b3132a6827 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Sat, 30 Jul 2022 13:35:59 +0000 Subject: [PATCH 28/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@0d0a934f0f3ebb21620375bb88b550a9d?= =?UTF-8?q?2b195b1=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 21 +++++++++++++++++++++ package.json | 22 ++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 LICENSE create mode 100644 package.json diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..bd66894 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 CiroLee + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/package.json b/package.json new file mode 100644 index 0000000..3b7561f --- /dev/null +++ b/package.json @@ -0,0 +1,22 @@ +{ + "name": "html_css_javascript", + "author": "cirolee", + "version": "1.0.0", + "description": "使用生动实用的例子, 抛离框架, 适合刚入门的开发者练习。", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/CiroLee/html_css_javascript.git" + }, + "keywords": [ + "html", + "css", + "javascript", + "frontend exercises" + ], + "license": "MIT", + "bugs": { + "url": "https://github.com/CiroLee/html_css_javascript/issues" + }, + "homepage": "https://github.com/CiroLee/html_css_javascript#readme" +} From 6cb1eaae320f422d18347a5109f4eaf0def498fc Mon Sep 17 00:00:00 2001 From: CiroLee Date: Thu, 4 Aug 2022 18:41:08 +0000 Subject: [PATCH 29/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@42e22ce3b790fcac2738bcd52e5a293a9?= =?UTF-8?q?cc2de30=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .prettierrc | 20 +++++ .vscode/settings.json | 3 +- README.md | 1 + clock/index.html | 23 ++++++ clock/index.js | 31 ++++++++ clock/style.css | 172 ++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 .prettierrc create mode 100644 clock/index.html create mode 100644 clock/index.js create mode 100644 clock/style.css diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..2d0bc41 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,20 @@ +{ + "arrowParens": "always", + "bracketSameLine": true, + "bracketSpacing": true, + "embeddedLanguageFormatting": "auto", + "htmlWhitespaceSensitivity": "css", + "insertPragma": false, + "jsxSingleQuote": false, + "printWidth": 120, + "proseWrap": "never", + "quoteProps": "as-needed", + "requirePragma": false, + "semi": true, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "all", + "useTabs": false, + "vueIndentScriptAndStyle": false, + "singleAttributePerLine": false +} diff --git a/.vscode/settings.json b/.vscode/settings.json index aef8443..a7909da 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,4 @@ { - "liveServer.settings.port": 5501 + "liveServer.settings.port": 5501, + "editor.formatOnSave": true } \ No newline at end of file diff --git a/README.md b/README.md index 952eb68..cbd951b 100644 --- a/README.md +++ b/README.md @@ -20,5 +20,6 @@ | loading | [Link](https://cirolee.github.io/html_css_javascript/loading/) | | | shape | [Link](https://cirolee.github.io/html_css_javascript/shape/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/shape/README.md) | | toss_icons | [Link](https://cirolee.github.io/html_css_javascript/toss_icons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/toss_icons/README.md) | +| clock | [Link](https://cirolee.github.io/html_css_javascript/clock/) | | #### [Bilibili](https://space.bilibili.com/470243907) \ No newline at end of file diff --git a/clock/index.html b/clock/index.html new file mode 100644 index 0000000..812b718 --- /dev/null +++ b/clock/index.html @@ -0,0 +1,23 @@ + + + + + + + Clock + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + diff --git a/clock/index.js b/clock/index.js new file mode 100644 index 0000000..ca7ee0e --- /dev/null +++ b/clock/index.js @@ -0,0 +1,31 @@ +const secondHand = document.querySelector('.second-hand'); +const minuteHand = document.querySelector('.minute-hand'); +const hourHand = document.querySelector('.hour-hand'); + +let date = null; +let hour = 0; +let minute = 0; +let second = 0; +function initClock() { + const date = new Date(); + hour = date.getHours(); + minute = date.getMinutes(); + second = date.getSeconds(); +} +function handRotation(target, deg) { + target.style.transform = `rotate(${deg}deg)`; +} +function clock() { + date = new Date(); + let hour = (date.getHours() % 12) + date.getMinutes() / 59; + let minute = date.getMinutes(); + let second = date.getSeconds(); + + handRotation(hourHand, hour * 30); + handRotation(minuteHand, minute * 6); + handRotation(secondHand, second * 6); + + setTimeout(clock, 500); +} + +window.onload = clock(); diff --git a/clock/style.css b/clock/style.css new file mode 100644 index 0000000..a9198cc --- /dev/null +++ b/clock/style.css @@ -0,0 +1,172 @@ +:root { + --bg-color: linear-gradient(158.53deg, #eef0f5 14.11%, #e2e4ea 85.89%); + --clock-bg: linear-gradient(134.17deg, #e6e9ef 4.98%, #e6e9ef 4.99%, #eef0f5 94.88%); + --clock-border: linear-gradient(170deg, #ffffff, #bac3cf); + --clock-shadow: 19px 25px 92px -32px rgba(166, 180, 200, 0.45), -20px -20px 61px rgba(255, 255, 255, 0.53), + 13px 14px 12px -6px rgba(166, 180, 200, 0.57); + --clock-inner-bg: linear-gradient(90deg, #eceef3 0%, #f1f2f7 100%); + --clock-inner-shadow: inset -12px -12px 30px rgba(255, 255, 255, 0.2), inset 7px 7px 8px rgba(166, 180, 200, 0.52), + inset 10px 11px 30px -1px rgba(166, 180, 200, 0.71); + --hand-color: #646e82; + --second-hand-color: #fd382d; +} +/* css 用于自动识别暗色模式 */ +@media (prefers-color-scheme: dark) { + :root { + --bg-color: linear-gradient(158.53deg, #363e46 14.11%, #2c343c 85.89%); + --clock-bg: linear-gradient(134.17deg, #3e464f 4.99%, #424a53 94.88%); + --clock-border: linear-gradient(170deg, #5d666d, #232a30); + --clock-shadow: 19px 25px 92px -32px rgba(35, 40, 45, 0.35), -20px -20px 61px rgba(72, 83, 92, 0.25), + 13px 14px 12px -6px rgba(35, 40, 45, 0.5); + --clock-inner-bg: linear-gradient(248.53deg, #363e46 -12.81%, #2c343c 305.95%); + --clock-inner-shadow: inset -12px -12px 30px rgba(72, 83, 92, 0.3), inset 7px 7px 8px rgba(35, 40, 45, 0.25), + inset 10px 11px 30px -1px rgba(35, 40, 45, 0.5); + --hand-color: #8e98a1; + } +} +* { + margin: 0; + box-sizing: border-box; +} + +body { + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + background-image: var(--clock-bg); +} + +.clock { + width: 200px; + height: 200px; + border-radius: 50%; + background-image: var(--clock-bg); + box-shadow: var(--clock-shadow); + position: relative; +} +/* 利用伪元素和padding实现border渐变效果 */ +.clock::after { + content: ''; + width: 100%; + height: 100%; + position: absolute; + top: -1px; + left: -1px; + padding: 1px; + border-radius: 50%; + z-index: -1; + background-image: var(--clock-border); +} + +.inner-circle { + width: 170px; + height: 170px; + border-radius: 50%; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background-image: var(--clock-inner-bg); + box-shadow: var(--clock-inner-shadow); +} + +/* 表盘刻度 使用最少的元素实现四个刻度 */ +.inner-circle::before, +.inner-circle::after { + content: ''; + border-radius: 2px; + background-color: rgba(166, 180, 200, 0.57); + position: absolute; +} + +.inner-circle::before { + width: 2px; + height: 10px; + top: 4px; + left: calc(50% - 1px); + box-shadow: 0 152px rgba(166, 180, 200, 0.57); +} + +.inner-circle::after { + width: 10px; + height: 2px; + left: 4px; + top: calc(50% - 1px); + box-shadow: 152px 0 rgba(166, 180, 200, 0.57); +} + +/* 表盘指针 */ +.hands { + width: 170px; + height: 170px; + position: relative; +} + +.dots { + width: 10px; + height: 10px; + border-radius: 50%; + background-color: var(--hand-color); + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + display: flex; + justify-content: center; + align-items: center; +} + +.dots::after { + content: ''; + width: 6px; + height: 6px; + border-radius: 50%; + background-color: var(--second-hand-color); +} + +.hand { + width: 3px; + height: var(--hand-length); + background-color: var(--hand-color); + position: absolute; + border-radius: 3px; + left: calc(50% - 1.5px); + top: var(--top); + z-index: -1; + transform-origin: center var(--origin-y); +} + +.hour-hand { + --hand-length: 60px; + --top: 40px; + --origin-y: 45px; +} + +.minute-hand { + --hand-length: 80px; + --top: 24px; + --origin-y: 61px; +} + +.second-hand { + --hand-length: 100px; + --top: 15px; + --origin-y: 70px; + width: 2px; + left: calc(50% - 1px); + background-color: var(--second-hand-color); + position: relative; + z-index: 1; +} + +.second-hand::after { + content: ''; + width: 4px; + height: 22px; + background-color: var(--second-hand-color); + position: absolute; + bottom: -2px; + border-radius: 2px; + left: calc(50% - 2px); +} From 8c5a219829492be03faa9851bc12d6fc09ff354b Mon Sep 17 00:00:00 2001 From: CiroLee Date: Wed, 10 Aug 2022 14:30:57 +0000 Subject: [PATCH 30/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@01b5073dd28ed37143575e3e4b74ef905?= =?UTF-8?q?8b5bf6b=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- loading/style.css | 166 ++++++++++++++++++++++++---------------------- 1 file changed, 88 insertions(+), 78 deletions(-) diff --git a/loading/style.css b/loading/style.css index 396b8a2..95d24da 100644 --- a/loading/style.css +++ b/loading/style.css @@ -38,7 +38,7 @@ body { width: 20px; height: 20px; border-radius: 50%; - animation: two-balls-pink 1.05s ease-in-out infinite + animation: two-balls-pink 1.05s ease-in-out infinite; } .two-balls .pink { @@ -80,61 +80,61 @@ body { background-color: #ff4a69; left: 15%; transform-origin: 50%; - animation: balls-circle .5s alternate infinite ease; + animation: balls-circle 0.5s alternate-reverse infinite ease; } .three-balls-bounce .shadow { width: 20px; height: 4px; border-radius: 50%; - background-color: rgba(0,0,0,.4); + background-color: rgba(0, 0, 0, 0.4); position: absolute; top: 62px; transform-origin: 50%; z-index: -1; left: 15%; filter: blur(1px); - animation: balls-shadow .5s alternate infinite ease; + animation: balls-shadow 0.5s alternate-reverse infinite ease; } .three-balls-bounce .shadow:nth-child(4), -.three-balls-bounce .circle:nth-child(2){ - left:45%; - animation-delay: .2s; +.three-balls-bounce .circle:nth-child(2) { + left: 45%; + animation-delay: 0.2s; } .three-balls-bounce .shadow:nth-child(5), -.three-balls-bounce .circle:nth-child(3){ - left:auto; - right:15%; - animation-delay: .3s; +.three-balls-bounce .circle:nth-child(3) { + left: auto; + right: 15%; + animation-delay: 0.3s; } @keyframes balls-circle { - 0%{ - top:60px; - height:5px; - border-radius: 50px 50px 25px 25px; - transform: scaleX(1.7); + 0% { + top: 60px; + height: 5px; + border-radius: 50px 50px 25px 25px; + transform: scaleX(1.7); } - 40%{ - height:20px; - border-radius: 50%; - transform: scaleX(1); + 40% { + height: 20px; + border-radius: 50%; + transform: scaleX(1); } - 100%{ - top:0%; + 100% { + top: 0%; } } @keyframes balls-shadow { - 0%{ - transform: scaleX(1.5); + 0% { + transform: scaleX(1.5); } - 40%{ - transform: scaleX(1); - opacity: .7; + 40% { + transform: scaleX(1); + opacity: 0.7; } - 100%{ - transform: scaleX(.2); - opacity: .4; + 100% { + transform: scaleX(0.2); + opacity: 0.4; } } @@ -148,34 +148,34 @@ body { } .four-balls:before, -.four-balls:after { +.four-balls:after { border-radius: 50%; content: ''; display: block; - height: 20px; + height: 20px; width: 20px; } .four-balls:before { - animation: ball1 1s infinite; + animation: ball1 1s infinite; background-color: #cb2025; box-shadow: 30px 0 0 #f8b334; margin-bottom: 10px; } .four-balls:after { - animation: ball2 1s infinite; + animation: ball2 1s infinite; background-color: #00a096; box-shadow: 30px 0 0 #97bf0d; } @keyframes four-balls-rotate { - 0% { - transform: rotate(0deg) scale(0.8); + 0% { + transform: rotate(0deg) scale(0.8); } - 50% { - transform: rotate(360deg) scale(1.2); + 50% { + transform: rotate(360deg) scale(1.2); } - 100% { - transform: rotate(720deg) scale(0.8); + 100% { + transform: rotate(720deg) scale(0.8); } } @@ -186,7 +186,7 @@ body { 50% { box-shadow: 0 0 0 #f8b334; margin-bottom: 0; - transform: translate(15px,15px); + transform: translate(15px, 15px); } 100% { box-shadow: 30px 0 0 #f8b334; @@ -201,7 +201,7 @@ body { 50% { box-shadow: 0 0 0 #97bf0d; margin-top: -20px; - transform: translate(15px,15px); + transform: translate(15px, 15px); } 100% { box-shadow: 30px 0 0 #97bf0d; @@ -235,13 +235,21 @@ body { } @keyframes small-box-ani { - 0% {transform: scale(0.2);} - 100% {transform: scale(0.75);} + 0% { + transform: scale(0.2); + } + 100% { + transform: scale(0.75); + } } @keyframes cube-box-ani { - 0% {transform: rotate(0deg);} - 100% {transform: rotate(90deg);} + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(90deg); + } } /* cube-box loading END */ @@ -257,7 +265,9 @@ body { } @keyframes spin { - to { transform: rotate(360deg); } + to { + transform: rotate(360deg); + } } /* circle loading END */ @@ -274,36 +284,36 @@ body { } @keyframes slices { - 0% { - border-top: 24px rgb(255 74 105 / 75%) solid; - border-right: 24px rgb(255 74 105 / 25%) solid; - border-bottom: 24px rgb(255 74 105 / 25%) solid; - border-left: 24px rgb(255 74 105 / 25%) solid; - } - 25% { - border-top: 24px rgb(255 74 105 / 25%) solid; - border-right: 24px rgb(255 74 105 / 75%) solid; - border-bottom: 24px rgb(255 74 105 / 25%) solid; - border-left: 24px rgb(255 74 105 / 25%) solid; - } - 50% { - border-top: 24px rgb(255 74 105 / 25%) solid; - border-right: 24px rgb(255 74 105 / 25%) solid; - border-bottom: 24px rgb(255 74 105 / 75%) solid; - border-left: 24px rgb(255 74 105 / 25%) solid; - } - 75% { - border-top: 24px rgb(255 74 105 / 25%) solid; - border-right: 24px rgb(255 74 105 / 25%) solid; - border-bottom: 24px rgb(255 74 105 / 25%) solid; - border-left: 24px rgb(255 74 105 / 75%) solid; - } - 100% { - border-top: 24px rgb(255 74 105 / 75%) solid; - border-right: 24px rgb(255 74 105 / 25%) solid; - border-bottom: 24px rgb(255 74 105 / 25%) solid; - border-left: 24px rgb(255 74 105 / 25%) solid; - } + 0% { + border-top: 24px rgb(255 74 105 / 75%) solid; + border-right: 24px rgb(255 74 105 / 25%) solid; + border-bottom: 24px rgb(255 74 105 / 25%) solid; + border-left: 24px rgb(255 74 105 / 25%) solid; + } + 25% { + border-top: 24px rgb(255 74 105 / 25%) solid; + border-right: 24px rgb(255 74 105 / 75%) solid; + border-bottom: 24px rgb(255 74 105 / 25%) solid; + border-left: 24px rgb(255 74 105 / 25%) solid; + } + 50% { + border-top: 24px rgb(255 74 105 / 25%) solid; + border-right: 24px rgb(255 74 105 / 25%) solid; + border-bottom: 24px rgb(255 74 105 / 75%) solid; + border-left: 24px rgb(255 74 105 / 25%) solid; + } + 75% { + border-top: 24px rgb(255 74 105 / 25%) solid; + border-right: 24px rgb(255 74 105 / 25%) solid; + border-bottom: 24px rgb(255 74 105 / 25%) solid; + border-left: 24px rgb(255 74 105 / 75%) solid; + } + 100% { + border-top: 24px rgb(255 74 105 / 75%) solid; + border-right: 24px rgb(255 74 105 / 25%) solid; + border-bottom: 24px rgb(255 74 105 / 25%) solid; + border-left: 24px rgb(255 74 105 / 25%) solid; + } } /* slices loading END */ @@ -379,4 +389,4 @@ body { margin-left: 60px; } } -/* switch-box loading END */ \ No newline at end of file +/* switch-box loading END */ From ad54e13a19b6adecbf4fde5b74ee5b8acc930c73 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Wed, 17 Aug 2022 09:21:43 +0000 Subject: [PATCH 31/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@0b3c8cc52360a68800c7c453584cc8637?= =?UTF-8?q?a3d1c7e=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- randomColor/color.css | 43 ++++++++++++++++++++++++++++++++++++++ randomColor/color.html | 31 +++++++++++++++++++++++++++ randomColor/color.js | 14 +++++++++++++ randomColor/secondary.css | 43 ++++++++++++++++++++++++++++++++++++++ randomColor/secondary.html | 30 ++++++++++++++++++++++++++ randomColor/secondary.js | 13 ++++++++++++ 6 files changed, 174 insertions(+) create mode 100644 randomColor/color.css create mode 100644 randomColor/color.html create mode 100644 randomColor/color.js create mode 100644 randomColor/secondary.css create mode 100644 randomColor/secondary.html create mode 100644 randomColor/secondary.js diff --git a/randomColor/color.css b/randomColor/color.css new file mode 100644 index 0000000..d3d54e2 --- /dev/null +++ b/randomColor/color.css @@ -0,0 +1,43 @@ +.nav-bar { + /* display: flex; */ + border: 2px solid black; + justify-content: center; + background-color: black; +} +ul { + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: flex-end; + list-style: none; +} +li, a { + color: aliceblue; + font-family: Georgia, 'Times New Roman', Times, serif; +} +.section { + /* margin: 0 auto; */ + margin-top: 51px; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} +.btn { + margin: 15px; + /* padding: 15px; */ + font-size: 25px; + font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; + width: 100px; + border-style: dashed; + height: 100px; + border-radius: 50%; + transition: linear 0.3s; + transition-delay: 0.3s; +} +/* .btn:hover{ */ + /* transform: rotate(-360deg) rotateX(-360deg); */ + /* background-color: green; */ + +/* } */ + \ No newline at end of file diff --git a/randomColor/color.html b/randomColor/color.html new file mode 100644 index 0000000..c64f1c5 --- /dev/null +++ b/randomColor/color.html @@ -0,0 +1,31 @@ + + + + + + + Random color page + + + + + + + \ No newline at end of file diff --git a/randomColor/color.js b/randomColor/color.js new file mode 100644 index 0000000..356fe31 --- /dev/null +++ b/randomColor/color.js @@ -0,0 +1,14 @@ +let colors= ["red", "blue", "yellow" ] //red=0, blue=1, yellow=2 +let btn = document.getElementById("colorBtn") +let text = document.querySelector(".textColor") +btn.addEventListener("click" ,function(){ +let randomColor= getRandomColor(); +document.body.style.backgroundColor = colors[randomColor]; +text.textContent = colors[randomColor] +document.getElementById("colorBtn").style.transform= "rotateX(360deg)";//a kind of animation to the button element + + +}) +function getRandomColor(){ + return Math.floor(Math.random() * colors.length) +} diff --git a/randomColor/secondary.css b/randomColor/secondary.css new file mode 100644 index 0000000..bf32a01 --- /dev/null +++ b/randomColor/secondary.css @@ -0,0 +1,43 @@ +.nav-bar { + /* display: flex; */ + border: 2px solid black; + justify-content: center; + background-color: black; +} +ul { + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: flex-end; + list-style: none; +} +li, a { + color: aliceblue; + font-family: Georgia, 'Times New Roman', Times, serif; +} +.section { + /* margin: 0 auto; */ + margin-top: 50px; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} +.btn { + margin: 15px; + /* padding: 15px; */ + font-size: 25px; + font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; + width: 100px; + border-style: dashed; + height: 100px; + border-radius: 50%; + transition: linear 0.3s; + transition-delay: 0.3s; +} +/* .btn:hover{ */ + /* transform: rotate(-360deg) rotateX(-360deg); */ + /* background-color: green; */ + +/* } */ + \ No newline at end of file diff --git a/randomColor/secondary.html b/randomColor/secondary.html new file mode 100644 index 0000000..d8f3b7b --- /dev/null +++ b/randomColor/secondary.html @@ -0,0 +1,30 @@ + + + + + + + Random color page + + + + + + + \ No newline at end of file diff --git a/randomColor/secondary.js b/randomColor/secondary.js new file mode 100644 index 0000000..d0e9c24 --- /dev/null +++ b/randomColor/secondary.js @@ -0,0 +1,13 @@ +let colors= ["orange", "green", "magenta", "olive", "purple"," violet", "indigo",] +let btn = document.getElementById("colorBtn") +let text = document.querySelector(".textColor") +btn.addEventListener("click" ,function(){ +let randomColor= getRandomColor(); +document.body.style.backgroundColor = colors[randomColor]; +text.textContent = colors[randomColor] +document.getElementById("colorBtn").style.transform= "rotateX(360deg)"; + +}) +function getRandomColor(){ + return Math.floor(Math.random() * colors.length) +} \ No newline at end of file From 0ddafc1d8c6a59b417b46fef15d6407dc77fd03a Mon Sep 17 00:00:00 2001 From: CiroLee Date: Wed, 17 Aug 2022 09:43:45 +0000 Subject: [PATCH 32/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@dfc025d865d96a32e4e9108fc9ff0f304?= =?UTF-8?q?03495ec=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index cbd951b..8462062 100644 --- a/README.md +++ b/README.md @@ -2,24 +2,27 @@ > 使用生动实用的例子, 抛离框架, 适合刚入门的开发者练习。 -> Use vivid and practical examples, without frameworks, suitable for developers who are just getting started. +> Use vivid and practical examples, without frameworks, suitable for developers who are just getting started. ## List -| 名称 | Live Demo | Notes | -|-------------|-------------------------------------------------------------------|-----------------------------------------------------------------------------------------| -| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | -| coupon | [Link](https://cirolee.github.io/html_css_javascript/coupons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/coupons/README.md) | -| sidemenu | [Link](https://cirolee.github.io/html_css_javascript/sidemenu/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/sidemenu/README.md) | -| switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | -| progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | -| avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | -| calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/readme.md) | -| Notes | [Link](https://cirolee.github.io/html_css_javascript/notes/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/notes/README.md) | -| canvasBoard | [Link](https://cirolee.github.io/html_css_javascript/drawing/) | | -| loading | [Link](https://cirolee.github.io/html_css_javascript/loading/) | | -| shape | [Link](https://cirolee.github.io/html_css_javascript/shape/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/shape/README.md) | -| toss_icons | [Link](https://cirolee.github.io/html_css_javascript/toss_icons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/toss_icons/README.md) | -| clock | [Link](https://cirolee.github.io/html_css_javascript/clock/) | | +| Name | Live Demo | Notes | Contributor | +| ----------- | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------- | +| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | | +| coupon | [Link](https://cirolee.github.io/html_css_javascript/coupons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/coupons/README.md) | | +| sidemenu | [Link](https://cirolee.github.io/html_css_javascript/sidemenu/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/sidemenu/README.md) | | +| switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | | +| progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | | +| avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | | +| calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/readme.md) | | +| Notes | [Link](https://cirolee.github.io/html_css_javascript/notes/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/notes/README.md) | | +| canvasBoard | [Link](https://cirolee.github.io/html_css_javascript/drawing/) | | | +| loading | [Link](https://cirolee.github.io/html_css_javascript/loading/) | | | +| shape | [Link](https://cirolee.github.io/html_css_javascript/shape/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/shape/README.md) | | +| toss_icons | [Link](https://cirolee.github.io/html_css_javascript/toss_icons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/toss_icons/README.md) | | +| clock | [Link](https://cirolee.github.io/html_css_javascript/clock/) | | | +| randomColor | [Link](https://cirolee.github.io/html_css_javascript/randomColor/color.html) | | [MargretEdeh](https://github.com/MargretEdeh) | + +**note: Cases without contributors are written by the creator of the project** #### [Bilibili](https://space.bilibili.com/470243907) \ No newline at end of file From f50efab0e8ae965730dfa954100fb97f7bd82e80 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Wed, 31 Aug 2022 15:21:03 +0000 Subject: [PATCH 33/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@c2ca41e86959809f2326021ebf781d82d?= =?UTF-8?q?9b84217=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calendar/index.js | 48 +++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/calendar/index.js b/calendar/index.js index 95eaa4f..95b0bf4 100644 --- a/calendar/index.js +++ b/calendar/index.js @@ -86,15 +86,15 @@ generateCalendar = (date) => { }; // 几个工具函数 function addClassNames(docNode, classNames) { - classNames.split(' ').forEach(c => { + classNames.split(' ').forEach((c) => { c && docNode.classList.add(c); - }) + }); } function removeClassNames(docNode, classNames) { - classNames.split(' ').forEach(c => { + classNames.split(' ').forEach((c) => { c && docNode.classList.remove(c); - }) + }); } // 渲染日历 function renderCalendar(date = new Date(), create = false) { @@ -106,14 +106,14 @@ function renderCalendar(date = new Date(), create = false) { // 动态创建标签,初始化时调用 if (create) { const fragment = document.createDocumentFragment(); - calendarData.forEach(item => { + calendarData.forEach((item) => { const li = document.createElement('li'); const div = document.createElement('div'); const isActive = [ item.day === today.getDate(), item.month === today.getMonth(), item.year === today.getFullYear(), - item.isCurrentMonth + item.isCurrentMonth, ].every(Boolean); const liClass = `date flex-center ${isActive ? 'active' : ''} ${item.isCurrentMonth ? '' : 'light'}`; addClassNames(div, 'date-num flex-center'); @@ -124,7 +124,6 @@ function renderCalendar(date = new Date(), create = false) { }); content.append(fragment); - } else { const children = Array.from(content.children).slice(1); @@ -133,13 +132,13 @@ function renderCalendar(date = new Date(), create = false) { item.day === today.getDate(), item.month === today.getMonth(), item.year === today.getFullYear(), - item.isCurrentMonth + item.isCurrentMonth, ].every(Boolean); children[index].childNodes[0].innerText = item.day; isActive ? addClassNames(children[index], 'active') : removeClassNames(children[index], 'active'); item.isCurrentMonth ? removeClassNames(children[index], 'light') : addClassNames(children[index], 'light'); - }) + }); } } @@ -153,7 +152,7 @@ function changeMonth(type) { month = date.getMonth() === 11 ? 0 : date.getMonth() + 1; year = month === 0 ? date.getFullYear() + 1 : date.getFullYear(); } - + date.setDate(1); date.setMonth(month); date.setFullYear(year); renderCalendar(date); @@ -161,14 +160,15 @@ function changeMonth(type) { function enabledTodatBtn() { const current = new Date(); - const isToday = date.getFullYear() === current.getFullYear() - && date.getMonth() === current.getMonth() - && date.getDate() === current.getDate(); - if (isToday) { - document.getElementById('today').setAttribute('disabled', true); - } else { - document.getElementById('today').removeAttribute('disabled'); - } + const isToday = + date.getFullYear() === current.getFullYear() && + date.getMonth() === current.getMonth() && + date.getDate() === current.getDate(); + if (isToday) { + document.getElementById('today').setAttribute('disabled', true); + } else { + document.getElementById('today').removeAttribute('disabled'); + } } function setDateInfo() { @@ -179,13 +179,17 @@ function setDateInfo() { } window.onload = function () { renderCalendar(date, true); -} +}; function changeToToday() { date = new Date(); renderCalendar(date); } -document.querySelector('.prev').addEventListener('click', function () { changeMonth('prev') }); -document.querySelector('.next').addEventListener('click', function () { changeMonth('next') }); -document.getElementById('today').addEventListener('click', changeToToday) \ No newline at end of file +document.querySelector('.prev').addEventListener('click', function () { + changeMonth('prev'); +}); +document.querySelector('.next').addEventListener('click', function () { + changeMonth('next'); +}); +document.getElementById('today').addEventListener('click', changeToToday); From ebc45f38f652742378e3bbe1974d4dbcde157cbc Mon Sep 17 00:00:00 2001 From: CiroLee Date: Tue, 11 Oct 2022 07:07:41 +0000 Subject: [PATCH 34/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@6272f3e4d59ece3f6e29c1c151e7201c1?= =?UTF-8?q?48aade2=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 8462062..79d3632 100644 --- a/README.md +++ b/README.md @@ -2,27 +2,25 @@ > 使用生动实用的例子, 抛离框架, 适合刚入门的开发者练习。 -> Use vivid and practical examples, without frameworks, suitable for developers who are just getting started. +> vivid and practical examples, without frameworks, suitable for developers who are just getting started. ## List -| Name | Live Demo | Notes | Contributor | -| ----------- | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------- | -| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | | -| coupon | [Link](https://cirolee.github.io/html_css_javascript/coupons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/coupons/README.md) | | -| sidemenu | [Link](https://cirolee.github.io/html_css_javascript/sidemenu/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/sidemenu/README.md) | | -| switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | | -| progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | | -| avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | | -| calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/readme.md) | | -| Notes | [Link](https://cirolee.github.io/html_css_javascript/notes/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/notes/README.md) | | -| canvasBoard | [Link](https://cirolee.github.io/html_css_javascript/drawing/) | | | -| loading | [Link](https://cirolee.github.io/html_css_javascript/loading/) | | | -| shape | [Link](https://cirolee.github.io/html_css_javascript/shape/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/shape/README.md) | | -| toss_icons | [Link](https://cirolee.github.io/html_css_javascript/toss_icons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/toss_icons/README.md) | | -| clock | [Link](https://cirolee.github.io/html_css_javascript/clock/) | | | -| randomColor | [Link](https://cirolee.github.io/html_css_javascript/randomColor/color.html) | | [MargretEdeh](https://github.com/MargretEdeh) | +| Name | Live Demo | Notes | Contributor | +| --- | --- | --- | --- | +| tabbar | [Link](https://cirolee.github.io/html_css_javascript/tabbar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | [CiroLee](https://github.com/CiroLee) | +| coupon | [Link](https://cirolee.github.io/html_css_javascript/coupons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/coupons/README.md) | [CiroLee](https://github.com/CiroLee) | +| sidemenu | [Link](https://cirolee.github.io/html_css_javascript/sidemenu/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/sidemenu/README.md) | [CiroLee](https://github.com/CiroLee) | +| switch | [Link](https://cirolee.github.io/html_css_javascript/switch/) | | [CiroLee](https://github.com/CiroLee) | +| progress | [Link](https://cirolee.github.io/html_css_javascript/progress/) | | [CiroLee](https://github.com/CiroLee) | +| avatar | [Link](https://cirolee.github.io/html_css_javascript/avatar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/tabbar/README.md) | [CiroLee](https://github.com/CiroLee) | +| calendar | [Link](https://cirolee.github.io/html_css_javascript/calendar/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/calendar/readme.md) | [CiroLee](https://github.com/CiroLee) | +| Notes | [Link](https://cirolee.github.io/html_css_javascript/notes/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/notes/README.md) | [CiroLee](https://github.com/CiroLee) | +| canvasBoard | [Link](https://cirolee.github.io/html_css_javascript/drawing/) | | [CiroLee](https://github.com/CiroLee) | +| loading | [Link](https://cirolee.github.io/html_css_javascript/loading/) | | [CiroLee](https://github.com/CiroLee) | +| shape | [Link](https://cirolee.github.io/html_css_javascript/shape/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/shape/README.md) | [CiroLee](https://github.com/CiroLee) | +| toss_icons | [Link](https://cirolee.github.io/html_css_javascript/toss_icons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/toss_icons/README.md) | [CiroLee](https://github.com/CiroLee) | +| clock | [Link](https://cirolee.github.io/html_css_javascript/clock/) | | [CiroLee](https://github.com/CiroLee) | +| randomColor | [Link](https://cirolee.github.io/html_css_javascript/randomColor/color.html) | | [MargretEdeh](https://github.com/MargretEdeh) | -**note: Cases without contributors are written by the creator of the project** - -#### [Bilibili](https://space.bilibili.com/470243907) \ No newline at end of file +#### [Bilibili](https://space.bilibili.com/470243907) From 292eea75133c0b9dfd0a389b4491a1b20d52ad57 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Thu, 12 Jan 2023 18:19:59 +0000 Subject: [PATCH 35/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@60425ba7997d00792b86be223efb3944a?= =?UTF-8?q?c92955b=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + numberKeyboard/index.html | 42 +++++++++++++ numberKeyboard/index.js | 38 ++++++++++++ numberKeyboard/style.css | 127 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 208 insertions(+) create mode 100644 numberKeyboard/index.html create mode 100644 numberKeyboard/index.js create mode 100644 numberKeyboard/style.css diff --git a/README.md b/README.md index 79d3632..7fbee22 100644 --- a/README.md +++ b/README.md @@ -22,5 +22,6 @@ | toss_icons | [Link](https://cirolee.github.io/html_css_javascript/toss_icons/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/toss_icons/README.md) | [CiroLee](https://github.com/CiroLee) | | clock | [Link](https://cirolee.github.io/html_css_javascript/clock/) | | [CiroLee](https://github.com/CiroLee) | | randomColor | [Link](https://cirolee.github.io/html_css_javascript/randomColor/color.html) | | [MargretEdeh](https://github.com/MargretEdeh) | +| numberKeyboard | [Link](https://cirolee.github.io/html_css_javascript/numberKeyboard/) | | [CiroLee](https://github.com/CiroLee) | #### [Bilibili](https://space.bilibili.com/470243907) diff --git a/numberKeyboard/index.html b/numberKeyboard/index.html new file mode 100644 index 0000000..05c2dea --- /dev/null +++ b/numberKeyboard/index.html @@ -0,0 +1,42 @@ + + + + + + + number keyboard + + + + +
    +
    +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    + + +
    +
    +
    + + + diff --git a/numberKeyboard/index.js b/numberKeyboard/index.js new file mode 100644 index 0000000..770052b --- /dev/null +++ b/numberKeyboard/index.js @@ -0,0 +1,38 @@ +const phone = document.querySelector('.phone'); +const keyboard = document.querySelector('.keyboard'); +const phoneWidth = phone.offsetWidth; +const input = document.querySelector('.phone__input'); +const deleteBtn = document.querySelector('.delete'); +const enterBtn = document.querySelector('.enter'); + +// init size +keyboard.setAttribute('style', `--width: ${phoneWidth - 16}px`); +// window resize to reset the keyboard size +window.addEventListener('resize', function () { + keyboard.setAttribute('style', `--width: ${phone.offsetWidth - 16}px`); +}); +keyboard.addEventListener('click', function (event) { + const num = event.target.dataset.num; + if (num) { + if (num === '.' && input.innerText.includes('.')) { + return; + } + if (num === '.' && !input.innerText.includes('.')) { + input.innerText = '0.'; + } else { + input.innerText = input.innerText + num; + } + } +}); + +deleteBtn.addEventListener('click', function () { + if (input.innerText.length > 1) { + input.innerText = input.innerText.slice(0, -1); + } else if (input.innerText.length === 1) { + input.innerText = ''; + } +}); + +enterBtn.addEventListener('click', function () { + alert(`the value is: ${input.innerText}`); +}); diff --git a/numberKeyboard/style.css b/numberKeyboard/style.css new file mode 100644 index 0000000..97c2497 --- /dev/null +++ b/numberKeyboard/style.css @@ -0,0 +1,127 @@ +* { + margin: 0; + box-sizing: border-box; + -webkit-tap-highlight-color: transparent; +} + +body { + --color: #333; + --number-btn-bg: #fff; + --keyboard-bg: #d9d9d9; + --enter-bg: #0ddeb8; + --number-active-bg: #e9e9e9; + --enter-active-bg: #48f4d5; + + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + height: 100vh; + background: linear-gradient(to top, #a1ffce, #faffd1); +} + +/* phone start */ +.phone { + width: 375px; + height: 667px; + background: #fff; + border-radius: 2px; + position: relative; + box-shadow: 2px 2px 26px -8px rgb(104 102 102 / 32%); +} + +.phone__input { + width: 80%; + height: 38px; + border-bottom: 1px solid #1976e1; + margin: auto; + margin-top: 20%; + font-size: 24px; + overflow-x: auto; + overflow-y: hidden; +} + +.phone__input::before { + content: '¥'; + font-size: 18px; + color: #aaa; + position: sticky; + left: 0; + background-color: #fff; + z-index: 2; +} +/* phone end */ + +/* keyboard start */ +.keyboard { + position: absolute; + width: 100%; + bottom: 0; + display: flex; + padding: 8px; + background-color: var(--keyboard-bg); +} + +.keyboard__numbers { + font-size: 0; +} + +.keyboard button { + width: calc((var(--width) - 18px) / 4); + display: inline-flex; + justify-content: center; + align-items: center; + height: 60px; + margin: 0 6px 6px 0; + outline: 0; + border: 0; + padding: 0; + color: var(--color); + font-size: 18px; + border-radius: 2px; + background-color: var(--number-btn-bg); + cursor: pointer; +} + +.keyboard button:active { + background-color: var(--number-active-bg); +} + +.keyboard__zero-dot { + display: flex; +} +.keyboard__zero-dot button { + margin-bottom: 0; +} + +.keyboard__zero-dot button:nth-child(1) { + flex: 1; +} +.keyboard__operate { + display: flex; + flex-direction: column; +} +.keyboard__operate button { + font-size: 16px; + margin-right: 0; +} +.keyboard__operate .enter { + flex: 1; + margin-bottom: 0; + background-color: var(--enter-bg); +} + +.keyboard__operate .enter:active { + background-color: var(--enter-active-bg); +} + +.keyboard__operate .delete i { + font-size: 18px; +} + +@media screen and (max-width: 414px) { + .phone { + width: 100%; + height: 100vh; + } +} From 516e0bdf10360d215cf84deb6749d9c2aea5ae75 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Thu, 12 Jan 2023 18:22:31 +0000 Subject: [PATCH 36/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@815d0793a756b61c13c0d058ee83fc22f?= =?UTF-8?q?34aa437=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- numberKeyboard/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/numberKeyboard/index.js b/numberKeyboard/index.js index 770052b..c61bb58 100644 --- a/numberKeyboard/index.js +++ b/numberKeyboard/index.js @@ -17,7 +17,7 @@ keyboard.addEventListener('click', function (event) { if (num === '.' && input.innerText.includes('.')) { return; } - if (num === '.' && !input.innerText.includes('.')) { + if (num === '.' && !input.innerText) { input.innerText = '0.'; } else { input.innerText = input.innerText + num; From 57a73b9ffbfb269a9ca74219b2f5f336f11fbd71 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Thu, 12 Jan 2023 18:31:05 +0000 Subject: [PATCH 37/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@1d604d0ae635e62c321290024d71dea2a?= =?UTF-8?q?d4b075a=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- numberKeyboard/index.html | 5 ++++- numberKeyboard/style.css | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/numberKeyboard/index.html b/numberKeyboard/index.html index 05c2dea..cb39dda 100644 --- a/numberKeyboard/index.html +++ b/numberKeyboard/index.html @@ -3,10 +3,13 @@ - + number keyboard + + +
    diff --git a/numberKeyboard/style.css b/numberKeyboard/style.css index 97c2497..c18f5aa 100644 --- a/numberKeyboard/style.css +++ b/numberKeyboard/style.css @@ -18,6 +18,7 @@ body { flex-direction: column; height: 100vh; background: linear-gradient(to top, #a1ffce, #faffd1); + font-family: 'Noto Serif SC', serif; } /* phone start */ From 17f7b807bdec6a26851d1a55ed2ae71ae181003a Mon Sep 17 00:00:00 2001 From: CiroLee Date: Sun, 14 May 2023 18:32:17 +0000 Subject: [PATCH 38/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@77d06f6f0ac4537126a8ca47177f1dff1?= =?UTF-8?q?6ebf5b4=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + streamerLight_button/index.html | 13 +++++ streamerLight_button/style.css | 85 +++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 streamerLight_button/index.html create mode 100644 streamerLight_button/style.css diff --git a/README.md b/README.md index 7fbee22..d602205 100644 --- a/README.md +++ b/README.md @@ -23,5 +23,6 @@ | clock | [Link](https://cirolee.github.io/html_css_javascript/clock/) | | [CiroLee](https://github.com/CiroLee) | | randomColor | [Link](https://cirolee.github.io/html_css_javascript/randomColor/color.html) | | [MargretEdeh](https://github.com/MargretEdeh) | | numberKeyboard | [Link](https://cirolee.github.io/html_css_javascript/numberKeyboard/) | | [CiroLee](https://github.com/CiroLee) | +| streamer-light-button | [Link](https://cirolee.github.io/html_css_javascript/streamerLight-button/) | | [CiroLee](https://github.com/CiroLee) | #### [Bilibili](https://space.bilibili.com/470243907) diff --git a/streamerLight_button/index.html b/streamerLight_button/index.html new file mode 100644 index 0000000..74bee0c --- /dev/null +++ b/streamerLight_button/index.html @@ -0,0 +1,13 @@ + + + + + + + + streamer-light button + + + + + diff --git a/streamerLight_button/style.css b/streamerLight_button/style.css new file mode 100644 index 0000000..0263b51 --- /dev/null +++ b/streamerLight_button/style.css @@ -0,0 +1,85 @@ +* { + margin: 0; + box-sizing: border-box; +} + +body { + height: 100vh; + font-size: 16px; + font-family: 'Courier New', Courier, monospace; + line-height: 1.5; + background: linear-gradient(to right, #fbc7d4, #9796f0); + display: flex; + justify-content: center; + align-items: center; +} +/* reset button style */ +button { + margin: 0; + border: 0; + outline: 0; + padding: 0; +} + +/* 容器 */ +.streamer-btn { + --radius: 6px; + --angle: 0deg; + height: 48px; + padding: 0 24px; + border-radius: var(--radius); + border-radius: var(--radius); + position: relative; + cursor: pointer; + overflow: hidden; + color: transparent; + background-color: #843ded; +} + +/* 承载文字内容 */ +.streamer-btn::before { + content: attr(data-text); + color: #fff; + position: absolute; + border-radius: calc(var(--radius) / 2); + margin: calc(var(--radius) / 2); + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + justify-content: center; + align-items: center; + background-color: #6d26d8; + transition: all 0.05s ease-in-out; + z-index: 2; +} + +/* 模拟流光效果 */ +.streamer-btn::after { + content: ''; + top: 50%; + left: 50%; + bottom: 0; + right: 0; + width: 300%; + height: 300%; + position: absolute; + transform: translate(-50%, -50%); +} + +.streamer-btn:hover::after { + background-image: conic-gradient(#843ded 50deg, #ac8dd9 80deg, #843ded 100deg); + animation: streamer 2s linear infinite; +} + +.streamer-btn:active::before { + transform: scale(0.99, 0.93); + box-shadow: inset 0 0 10px -2px #5e1ebf; +} + +@keyframes streamer { + to { + transform: translate(-50%, -50%) rotate(360deg); + } +} From bc3d78b82cc552d78fdd04f32daec59e554a344d Mon Sep 17 00:00:00 2001 From: CiroLee Date: Sun, 14 May 2023 18:33:58 +0000 Subject: [PATCH 39/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@8edafa532b39d311e69508661e61aa038?= =?UTF-8?q?4c26426=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {streamerLight_button => streamerLight-button}/index.html | 0 {streamerLight_button => streamerLight-button}/style.css | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {streamerLight_button => streamerLight-button}/index.html (100%) rename {streamerLight_button => streamerLight-button}/style.css (100%) diff --git a/streamerLight_button/index.html b/streamerLight-button/index.html similarity index 100% rename from streamerLight_button/index.html rename to streamerLight-button/index.html diff --git a/streamerLight_button/style.css b/streamerLight-button/style.css similarity index 100% rename from streamerLight_button/style.css rename to streamerLight-button/style.css From 8845cdabc6b74a157020ddd42e855e3dcb99252c Mon Sep 17 00:00:00 2001 From: CiroLee Date: Sun, 14 May 2023 18:36:40 +0000 Subject: [PATCH 40/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@10364aa5e2a0ebdf8e0cc04e10c193541?= =?UTF-8?q?c623401=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- streamerLight-button/style.css | 8 -------- 1 file changed, 8 deletions(-) diff --git a/streamerLight-button/style.css b/streamerLight-button/style.css index 0263b51..f5188bb 100644 --- a/streamerLight-button/style.css +++ b/streamerLight-button/style.css @@ -66,18 +66,10 @@ button { height: 300%; position: absolute; transform: translate(-50%, -50%); -} - -.streamer-btn:hover::after { background-image: conic-gradient(#843ded 50deg, #ac8dd9 80deg, #843ded 100deg); animation: streamer 2s linear infinite; } -.streamer-btn:active::before { - transform: scale(0.99, 0.93); - box-shadow: inset 0 0 10px -2px #5e1ebf; -} - @keyframes streamer { to { transform: translate(-50%, -50%) rotate(360deg); From 2887cbe16e78fdc050ead05ef2d8a88d9a393462 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Mon, 23 Sep 2024 10:42:35 +0000 Subject: [PATCH 41/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@ff1249d53c9f2357e81433c5aea15ea0a?= =?UTF-8?q?41f02c7=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + streamerLight-button-2/README.md | 1 + streamerLight-button-2/index.html | 16 +++++++++ streamerLight-button-2/sytle.css | 55 +++++++++++++++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 streamerLight-button-2/README.md create mode 100644 streamerLight-button-2/index.html create mode 100644 streamerLight-button-2/sytle.css diff --git a/README.md b/README.md index d602205..6422875 100644 --- a/README.md +++ b/README.md @@ -24,5 +24,6 @@ | randomColor | [Link](https://cirolee.github.io/html_css_javascript/randomColor/color.html) | | [MargretEdeh](https://github.com/MargretEdeh) | | numberKeyboard | [Link](https://cirolee.github.io/html_css_javascript/numberKeyboard/) | | [CiroLee](https://github.com/CiroLee) | | streamer-light-button | [Link](https://cirolee.github.io/html_css_javascript/streamerLight-button/) | | [CiroLee](https://github.com/CiroLee) | +| streamer-light-button-2 | [Link](https://cirolee.github.io/html_css_javascript/streamerLight-button-2/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/streamer-light-button-2/README.md) | [CiroLee](https://github.com/CiroLee) | #### [Bilibili](https://space.bilibili.com/470243907) diff --git a/streamerLight-button-2/README.md b/streamerLight-button-2/README.md new file mode 100644 index 0000000..9a1fbce --- /dev/null +++ b/streamerLight-button-2/README.md @@ -0,0 +1 @@ +利用 [offset-path](https://developer.mozilla.org/en-US/docs/Web/CSS/offset-path): polygon()绘制多边形路径,配合[offset-distance](https://developer.mozilla.org/en-US/docs/Web/CSS/offset-distance)实现流光路径动画 diff --git a/streamerLight-button-2/index.html b/streamerLight-button-2/index.html new file mode 100644 index 0000000..f04176b --- /dev/null +++ b/streamerLight-button-2/index.html @@ -0,0 +1,16 @@ + + + + + + + + streamer-light button 2 + + + + + diff --git a/streamerLight-button-2/sytle.css b/streamerLight-button-2/sytle.css new file mode 100644 index 0000000..21475fc --- /dev/null +++ b/streamerLight-button-2/sytle.css @@ -0,0 +1,55 @@ +body { + height: 100vh; + display: flex; + align-items: center; + justify-content: center; + background: linear-gradient(to right, #56ccf2, #2f80ed); +} +.streamer-btn { + --radius: 6px; + --gap: 2px; + background-color: rgba(36, 35, 35, 0.794); + border-radius: var(--radius); + padding: var(--gap); + color: white; + outline: 0; + border: 0; + font-size: 18px; + position: relative; + overflow: hidden; +} + +.streamer-btn__glow { + --size: 60px; + content: ''; + position: absolute; + width: var(--size); + height: var(--size); + border-radius: 50%; + background-image: radial-gradient(50% 50% at 50% 50%, #f6b065, #f1a554 31%, #b97731 63%, rgba(152, 92, 27, 0.6)); + backdrop-filter: blur(10px); + top: -50%; + offset-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%); + animation: streamer 6s linear infinite; +} + +.streamer-btn__inner { + position: relative; + padding: 8px 12px; + background-color: #242323; + border-radius: calc(var(--radius) - var(--gap)); + z-index: 2; + cursor: pointer; +} +.streamer-btn__inner:hover + .streamer-btn__glow { + animation-play-state: paused; +} + +@keyframes streamer { + from { + offset-distance: 0%; + } + to { + offset-distance: 100%; + } +} From 6b42af3543d90af9e7c3275c46d876336730a413 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Mon, 23 Sep 2024 10:43:38 +0000 Subject: [PATCH 42/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@50c0cd4a383b7134187bfae83bc5a0d45?= =?UTF-8?q?37e38d2=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6422875..baeefa0 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,6 @@ | randomColor | [Link](https://cirolee.github.io/html_css_javascript/randomColor/color.html) | | [MargretEdeh](https://github.com/MargretEdeh) | | numberKeyboard | [Link](https://cirolee.github.io/html_css_javascript/numberKeyboard/) | | [CiroLee](https://github.com/CiroLee) | | streamer-light-button | [Link](https://cirolee.github.io/html_css_javascript/streamerLight-button/) | | [CiroLee](https://github.com/CiroLee) | -| streamer-light-button-2 | [Link](https://cirolee.github.io/html_css_javascript/streamerLight-button-2/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/streamer-light-button-2/README.md) | [CiroLee](https://github.com/CiroLee) | +| streamer-light-button-2 | [Link](https://cirolee.github.io/html_css_javascript/streamerLight-button-2/) | [readme](https://github.com/CiroLee/html_css_javascript/blob/main/streamerLight-button-2/README.md) | [CiroLee](https://github.com/CiroLee) | #### [Bilibili](https://space.bilibili.com/470243907) From 2b426d2bc7a9702b8ec6fce1aa9d1e9904a90f42 Mon Sep 17 00:00:00 2001 From: CiroLee Date: Mon, 23 Sep 2024 10:47:07 +0000 Subject: [PATCH 43/43] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Ci?= =?UTF-8?q?roLee/html=5Fcss=5Fjavascript@f9bc0c1a3d5631b9b4afabfd9c218fa0b?= =?UTF-8?q?8b41447=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- streamerLight-button-2/sytle.css | 1 + 1 file changed, 1 insertion(+) diff --git a/streamerLight-button-2/sytle.css b/streamerLight-button-2/sytle.css index 21475fc..3615663 100644 --- a/streamerLight-button-2/sytle.css +++ b/streamerLight-button-2/sytle.css @@ -4,6 +4,7 @@ body { align-items: center; justify-content: center; background: linear-gradient(to right, #56ccf2, #2f80ed); + overflow: hidden; } .streamer-btn { --radius: 6px;