整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

这18个网站能让你的页面背景炫酷起来

这18个网站能让你的页面背景炫酷起来

. CSS3 Patterns Gallery

这18个网站是我在取经路上意外发现的,里面包括 纯CSS 实现的炫酷背景,还有专门制作背景图的网站。 算是取经路上的大补之物~


? 传送门:https://projects.verou.me/css3patterns/

如果你认识 Lea Verou 的话,大概率知道这个网站,她徒手写了几十个 纯CSS 实现的背景图样式。 网站上提供了她的代码。
如果你不认识她,那我一定要推荐你阅读一下 《CSS揭秘(图灵出品)》 这本书,它会让你大受震撼!



2. CSS3 Gradients

? 传送门:http://www.standardista.com/cssgradients/


除了 Lea Verou 的网站外,CSS3 Gradients 也提供了这类示例。同样提供代码下载。



3. CSS Gradients with background-blend-mode

? 传送门:https://bennettfeely.com/gradients/


功能和前面两个差不多,自己点开看看呗~



4. CSS Flags

? 传送门:http://www.standardista.com/CSS3gradients/flags.html


使用 纯CSS 的方式画出多国国旗。“右键 - 检查网页源代码” 可以获取代码。



5. Hero Patterns

? 传送门:https://heropatterns.com/


Hero Patterns 是比较出名网站了,官方提供了几十款纹理,你可以根据自己的需求设置两种对比色和不透明度。 完成后会返回一段CSS代码给你,不过和前面几个网站有点不同的是,Hero Patterns 的背景图使用了 base64 的方式去实现的,而不是 CSS 背景渐变 的方式。



6. HUE.CSS

? 传送门:http://evankarageorgos.github.io/hue/grid.html


使用 CSS 背景渐变 的方式做出的数十款高端大气的背景,网站上的所有案例都提供了代码。



7. Pure CSS Stripes Generator

? 传送门:https://stripesgenerator.com/


Pure CSS Stripes Generator 主要是帮你生成 条纹背景 的代码。 你可以在网站上根据自己的需求设置条纹的颜色、大小、倾斜角度等属性。 最后会返回一段 css 代码给你。



8. Glass Morphism

? 传送门:https://glassgenerator.netlify.app/


Glass Morphism 的功能是设置 毛玻璃背景 样式,你可以在上面手动调节毛玻璃的不透明度、模糊度、背景色等属性。 最后会返回 html 和 css 代码给你。 非常好玩,赶紧去试试吧~



9. uiGradients

? 传送门:https://uigradients.com/


提供了不同色系搭配的渐变代码。如果你不太擅长配色,可以使用 uiGradients



10. Gradient Colors Collection Palette

? 传送门:https://webkul.github.io/coolhue/


Gradient Colors Collection Palette 上有几十个色卡,可以一键复制 css 代码。



11. Fresh Background Gradients

? 传送门:https://webgradients.com/


Fresh Background Gradients 提供了即使个配色方案,有双色的,也有多色的。同样提供一键复制 css 代码。



12. Cool Backgrounds

? 传送门:https://coolbackgrounds.io/


可以生成 5种类型 的背景图片,并且提供多套成熟的配色方案供你选择。 但该网站生成的是背景图片,不是代码。



13. Svg Wave

? 传送门:https://svgwave.in/


生成波浪背景图,可以自定义波浪的幅度、颜色等属性。 支持 SVG 和 PNG 下载。



14. Subtle Patterns

? 传送门:https://www.toptal.com/designers/subtlepatterns/


提供了几十种纹理图。



15. Stripe Generator

? 传送门:http://www.stripegenerator.com/


可配置的条纹背景图片。



16. ZenBG

? 传送门:https://galactic.ink/bg/


在线设置纹理背景和渐变颜色,最后融合在一起生成一张好看的图片。 同时还提供 css 代码给你参考,告诉你如何更好的使用这张图片。



17. Patterninja

? 传送门:https://patterninja.com/


光看图片介绍就知道这个网站好好玩。 Patterninja 帮你生成可平铺的背景图。



18. The Pattern Library

? 传送门:http://thepatternlibrary.com/


提供几十款可平铺的好看背景。 注意:下载按钮在网页的左上角。

.检查元素是否在屏幕可见区域内

我们如何获得元素的点击率?

主要取决于用户点击元素的次数和元素在页面上显示的次数。

我们可以很容易地获取到用户的点击次数,但是如何获取一个元素的显示次数呢?

我们可以通过IntersectionObserver轻松实现,大家可以点击codepen体验一下实际效果。

<div class="tips">box is visible</div>
<div class="box">box</div>
<script>
  const $tips=document.querySelector('.tips')
  const callback=(entries)=> {
    entries.forEach((entry)=> {
      console.log(entry.intersectionRatio)
      if (entry.intersectionRatio > 0) {
        $tips.innerHTML='box is visible'
      } else if (entry.intersectionRatio <=0) {
        $tips.innerHTML='box is hidden'
      }
    });
  }

  const options={
    // A list of thresholds, sorted in increasing numeric order, where each threshold is a ratio of intersection area to bounding box area of an observed target. Notifications for a target are generated when any of the thresholds are crossed for that target. If no value was passed to the constructor, 0 is used.
    // threshold: 1,
  }
  const observer=new IntersectionObserver(callback, options)
  observer.observe(document.querySelector('.box'))
</script>
2.深拷贝一个对象

我们经常使用 lodash 来深拷贝一个对象。

const obj={
  a: {
    b: {
      name: 'fatfish'
    }
  }
}

const obj2=lodash.cloneDeep(obj)

obj2.a.b.name='medium'
console.log(obj.a.b.name) // fatfish
console.log(obj2.a.b.name) // medium

但这非常麻烦,因为我们必须下载整个库才能使用 cloneDeep。

幸运的是,在大多数情况下,我们可以使用这两种更简单的方式来深拷贝一个对象。

深度克隆1

const deepClone1=(obj)=> {
  return JSON.parse(JSON.stringify(obj))
}

const obj={
  a: {
    b: {
      name: 'fatfish'
    }
  }
}
const obj2=deepClone1(obj)
obj2.a.b.name='medium'
console.log(obj.a.b.name) // fatfish
console.log(obj2.a.b.name) // medium

是的,我相信你已经看到了,deepClone1 有一些缺陷,它不能复制函数、正则表达式、未定义等值。

const deepClone1=(obj)=> {
  return JSON.parse(JSON.stringify(obj))
}

const obj={
  a: {
    b: {
      name: 'fatfish'
    }
  },
  reg: /fatfish/gi,
  name: undefined,
  showName: (name)=> console.log(name)
}
const obj2=deepClone1(obj)
console.log(obj2)
/*
{
    "a": {
        "b": {
            "name": "fatfish"
        }
    },
    "reg": {}
}
*/

深度克隆2

另一种方法是使用 structuredClone。

这非常方便,我们甚至可以不做任何处理就可以深拷贝一个对象。

它甚至可以复制正则表达式和未定义的。

const obj={
  a: {
    b: {
      name: 'fatfish'
    }
  },
  reg: /fatfish/gi,
  name: undefined,
}

const obj2=structuredClone(obj)
obj2.a.b.name='medium'
console.log(obj.a.b.name) // fatfish
console.log(obj2.a.b.name) // medium
console.log(obj2)
/*
{
    "a": {
        "b": {
            "name": "medium"
        }
    },
    "reg": /fatfish/gi,
    "name": undefined
}
*/

但是真的没有缺点吗? 它在某些情况下也无法正常工作。

  • 它不能复制功能
  • 它不复制dom元素
  • ETC。


3.获取浏览器名称

在前端监控系统中,需要获取用户出错的浏览器。

这是获取主要浏览器名称的通用函数。

const getBrowserName=()=> {
  const userAgent=window.navigator.userAgent
  const browsers={
    chrome: /chrome/i,
    safari: /safari/i,
    firefox: /firefox/i,
    ie: /internet explorer/i,
    edge: /edge/i,
    opera: /opera|opr/i,
    yandex: /yandex/i,
    uc: /ucbrowser/i,
    samsung: /samsungbrowser/i,
    maxthon: /maxthon/i,
    phantomjs: /phantomjs/i,
    crios: /crios/i,
    firefoxios: /fxios/i,
    edgios: /edgios/i,
    safariios: /safari/i,
    android: /android/i,
    ios: /(iphone|ipad|ipod)/i,
    unknown: /unknown/i
  }

  for (const key in browsers) {
    if (browsers[key].test(userAgent)) {
      return key
    }
  }
  return 'unknown'
}
// Execute the above code in chrome browser
console.log(getBrowserName()) // chrome
// Execute the above code in safari browser
console.log(getBrowserName()) // safari

4.获取随机颜色

我怎样才能得到一个随机的有效颜色?

大家可以点击codepen链接体验实际效果。

const randomColor=()=> {
  // Generate three random numbers as the three components of an RGB color value
  const r=Math.floor(Math.random() * 256);
  const g=Math.floor(Math.random() * 256);
  const b=Math.floor(Math.random() * 256);
  // Convert RGB color values to hexadecimal format
  const hexR=r.toString(16).padStart(2, '0');
  const hexG=g.toString(16).padStart(2, '0');
  const hexB=b.toString(16).padStart(2, '0');
  // Concatenated into a complete color value string
  const hexColor=`#${hexR}${hexG}${hexB}`;
  return hexColor;
}

演示地址:https://code.juejin.cn/pen/7259289776530915385

5.复制内容到剪贴板

为了给我们的网站用户提供更好的交互体验,我们经常需要提供将内容复制到剪贴板的功能。

难以置信的是,我们竟然只需要6行代码就可以实现这个功能。

const copyToClipboard=(content)=> {
  const textarea=document.createElement("textarea")
  textarea.value=content
  document.body.appendChild(textarea)
  textarea.select()
  document.execCommand("Copy")
  textarea.remove()
}

copyToClipboard('i love medium') // i love medium

演示地址:https://code.juejin.cn/pen/7259288042232840248

6.从搜索中获取查询字符串

使用 URLSearchParams 解析搜索数据变得非常容易。

const getSearchParam=(name)=> {
  const searchParams=new URLSearchParams(window.location.search)
  return searchParams.get(name)
}

// https://medium.com?name=fatfish&age=1000
console.log(getSearchParam('name')) // fatfish
console.log(getSearchParam('age')) // 1000
const getSearchParams=()=> {
  const searchParams=new URLSearchParams(window.location.search)
  const params={};
  for (const [ key, value ] of searchParams) {
    params[key]=value
  }

  return params
}
// https://medium.com?name=fatfish&age=1000
getSearchParams() // { name: 'fatfish', age: 1000 }

7.将元素滚动到页面顶部

我们可以使用 scrollIntoView 方法将元素滚动到页面顶部。甚至它可以提供非常流畅的用户体验。

const scrollToTop=(ele)=> {
  ele.scrollIntoView({ behavior: "smooth", block: "start" })
}

document.querySelector('button').addEventListener('click', function () {
  scrollToTop(this)
}, false)

8.将元素滚动到页面底部

将元素滚动到顶部是如此简单。

那我们要如何将元素滚动到页面底部?我想你已经猜到了,设置block结束即可。

const scrollToTop=(ele)=> {
  ele.scrollIntoView({ behavior: "smooth", block: "end" })
}

document.querySelector('button').addEventListener('click', function () {
  scrollToTop(this)
}, false)

演示地址:https://code.juejin.cn/pen/7259278531174072379

画过渡效果对于程序的重要性是毋容置疑的,过渡动画的流畅真的能给人一种程序很顺畅的感觉。ios系统基本上不管是什么操作都喜欢运用动画过渡,所以给人一种超流畅的感觉!在进行 web 开发中,我们经常需要为网页添加大量的动画来使页面变得更流畅,更炫酷。但是写动画其实是一件很繁琐的事情,所以引入成熟的动画插件就很舒服了。

效果展示

wowjs

介绍:在一些网页上,当你滚动页面的时候会看到各式各样的元素动画效果,非常动感。WOW.js 就是一款帮助你实现这种 CSS 动画效果的插件,很容易定制,你可以改变动画设置喜欢的风格、延迟、长度、偏移和迭代等。

官网效果展示:https://www.delac.io/wow/

github: https://github.com/matthieua/WOW

使用方法

  • 下载:npm install wowjs --save
  • 引入使用:

之后我们把 animate.css 引入进来就可以使用了。

引入 animate.css

介绍:animate.css 是一个css3动画库,包含76种动画,并且完全免费开源,可以到github上去下载,使用方法也非常简单,并且因为是css库的原因,完全兼容 H5小程序以及uni-app

官网:https://daneden.github.io/animate.css/

github: https://github.com/daneden/animate.css

下载:npm install animate.css --save

引入:import './animate.css'

ps: 如果需要兼容 小程序 uni-app 可以看看这篇:在H5,小程序,uni-app中使用animate.css

使用方法

在需要用到这个效果的元素上面添加class="wow fadeInUp" 和 data-wow-delay=".1s",具体所表示的含义在下图中有说明

没错!引入之后使用就是这么简单!!