免费的矢量图标库-网页开发者必备

大家好我是山河,最近有很多朋友问我有没有这些图标啊,那些图标啊,我很疑惑啊,这些东西不是有很多免费的图库吗?

今天就给大家分享一个,开发者必备的图库站

阿里巴巴矢量图标库

网站地址:https://www.iconfont.cn/

法律声明:

iconfont法律声明截图

关于版权©说明

iconfont法律声明截图

完整法律声明地址:iconfont 法律声明 (taobao.com)

个人开发者,不商用是免费的,如果用官方的进行商用,则要官方的书面许可,如果是用户提交的库,则看用户的要求,最好能得一份书面说明。

图库预览图

由此可以看出来,对于我们普通开发者还是非常舒服了。

本文就讲到这里了。

山河博客HTML

一个动画渐变的科幻形按钮

大家好我是山河,今晚我给大家带来了一个很好看的按钮,动画效果很棒,代码大家自己借鉴吧。

话不多说,直接贴代码出来。

先上效果图(点击下面文字可以查看图片)

blog.shanhe.info
效果图

直接上代码

css代码块

a {
            display: block;
            width: 220px;
            height: 70px;
            z-index: 1;
        }

        a:after {
            content: '';
            background: linear-gradient(120deg, #6559ae, #ff7159, #6559ae);
            background-size: 400% 400%;
            animation: gradient 3s ease-in-out infinite, border 0.5s forwards ease-in-out reverse;
        }

        a>span {
            display: block;
            background: linear-gradient(120deg, #6559ae, #ff7159, #6559ae);
            background-size: 400% 400%;
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            animation: gradient 3s ease-in-out infinite;
        }

        .absolute-centering,
        body:after,
        a,
        a:after {
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            margin: auto;
        }

        .text-formatting,
        a {
            text-transform: uppercase;
            text-decoration: none;
            text-align: center;
            letter-spacing: 2px;
            line-height: 70px;
            font-size: 28px;
        }

        @keyframes gradient {
            0% {
                background-position: 14% 0%;
            }

            50% {
                background-position: 87% 100%;
            }

            100% {
                background-position: 14% 0%;
            }
        }

        @keyframes border {
            0% {
                -webkit-clip-path: polygon(0% 100%, 4px 100%, 4px 4px, 216px 4px, 216px 66px, 4px 66px, 4px 100%, 100% 100%, 100% 0%, 0% 0%);
            }

            25% {
                -webkit-clip-path: polygon(0% 100%, 4px 100%, 4px 4px, 216px 4px, 216px 66px, 216px 66px, 216px 100%, 100% 100%, 100% 0%, 0% 0%);
            }

            50% {
                -webkit-clip-path: polygon(0% 100%, 4px 100%, 4px 4px, 216px 4px, 216px 4px, 216px 4px, 216px 4px, 216px 4px, 100% 0%, 0% 0%);
            }

            75% {
                -webkit-clip-path: polygon(0% 100%, 4px 100%, 4px 4px, 4px 4px, 4px 4px, 4px 4px, 4px 4px, 4px 4px, 4px 0%, 0% 0%);
            }

            100% {
                -webkit-clip-path: polygon(0% 100%, 4px 100%, 4px 100%, 4px 100%, 4px 100%, 4px 100%, 4px 100%, 4px 100%, 4px 100%, 0% 100%);
            }
        }

html代码块

<a href="#"><span>按钮</span></a>

好了,本文到此结束。

我是山河

山河博客

PHP策略模式详解-PHP设计模式

山河博客
山河博客

大家好我是山河,今天跟大家来谈谈PHP设计模式中的PHP策略模式

策略模式特点:传递不同的参数调用不同的策略(方法)

话不多说了,直接上代码加深印象

<?php
class Walk {
	public function way() {
		echo '走着去<br>';
	}
}
class Bus {
	public function way() {
		echo '坐车去<br>';
	}
}
//策略模式
class Student {
	public function play($obj) {
		$obj->way();
	}
}
//测试
$stu=new Student;
$stu->play(new Walk());	//走着去
$stu->play(new Bus());	//坐车去

大家看完这段代码应该都明白了吧。

好了,文章结束,我是山河

山河博客Code-2

JQ伪类选择器笔记(补充)

大家好我是山河,今天我又开始总结笔记了。

常用的伪类选择器有六种。

“位置”伪类选择器。

“子元素”伪类选择器。

“可见性”伪类选择器。

“内容”伪类选择器。

“表单”伪类选择器。

“表单属性”伪类选择器。

在jQuery中,只有:nth-child()、:nth-of-type()这两个选择器的下标是从1开始的,其他所有的选择器和jQuery方法都是从0开始的。(重点)

笔记源于 《从0到1:jQuery快速上手》此书,推荐各位看,建议有基础者学习,能帮助补充大量jq的知识,评价中等,

山河博客

暗黑紫冒泡幽灵404错误页

大家好我是山河,之前我不是在折腾网站的404错误页嘛,当时网友分享了很多个404错误页给我,我挑了几个好看的也分享给大家,不多说,先上图再上资源。

这个404错误页是纯代码实现,没用上图片!真纯代码,可以借鉴动画效果。

山河直接给大家上图上代码上资源

404错误页展示图
404错误页展示

幽灵气泡是动图,但是我懒得弄Gif动图了。

再上代码

<!-- /* 山河博客此代码源于网友分享:原作者信息未改,仅修复了代码 博客:blog.shanhe.info */ -->
<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport"
    content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no">
  <title>山河博客-404页面</title>
  <style>
    <!-- 由于网站CSS代码在HTML代码里没高亮展示,我把CSS移到另外一个单独的CSS代码块,复制单独的CSS代码块过来这里即可,或者引入也可以 -->
  </style>
</head>
<body>
  <div class="box">
    <div class="box__ghost">
      <div class="symbol"></div>
      <div class="symbol"></div>
      <div class="symbol"></div>
      <div class="symbol"></div>
      <div class="symbol"></div>
      <div class="symbol"></div>
      <div class="box__ghost-container">
        <div class="box__ghost-eyes">
          <div class="box__eye-left"></div>
          <div class="box__eye-right"></div>
        </div>
        <div class="box__ghost-bottom">
          <div></div>
          <div></div>
          <div></div>
          <div></div>
          <div></div>
        </div>
      </div>
      <div class="box__ghost-shadow"></div>
    </div>
    <div class="box__description">
      <div class="box__description-container">
        <div class="box__description-title">404错误!</div>
        <div class="box__description-text">看来我们找不到你要找的那一页</div>
      </div>
      <a href="https://blog.shanhe.info" class="box__button">返回首页</a>
    </div>
  </div>
</body>
</html> 
html,
    body {
      background: #28254C;
      font-family: 'Ubuntu';
    }
    * {
      box-sizing: border-box;
    }
    .box {
      width: 350px;
      height: 100%;
      max-height: 600px;
      min-height: 450px;
      background: #332F63;
      border-radius: 20px;
      position: absolute;
      left: 50%;
      top: 50%;
      transform: translate(-50%, -50%);
      padding: 30px 50px;
    }
    .box .box__ghost {
      padding: 15px 25px 25px;
      position: absolute;
      left: 50%;
      top: 30%;
      transform: translate(-50%, -30%);
    }
    .box .box__ghost .symbol:nth-child(1) {
      opacity: .2;
      animation: shine 4s ease-in-out 3s infinite;
    }
    .box .box__ghost .symbol:nth-child(1):before,
    .box .box__ghost .symbol:nth-child(1):after {
      content: '';
      width: 12px;
      height: 4px;
      background: #fff;
      position: absolute;
      border-radius: 5px;
      bottom: 65px;
      left: 0;
    }
    .box .box__ghost .symbol:nth-child(1):before {
      transform: rotate(45deg);
    }
    .box .box__ghost .symbol:nth-child(1):after {
      transform: rotate(-45deg);
    }
    .box .box__ghost .symbol:nth-child(2) {
      position: absolute;
      left: -5px;
      top: 30px;
      height: 18px;
      width: 18px;
      border: 4px solid;
      border-radius: 50%;
      border-color: #fff;
      opacity: .2;
      animation: shine 4s ease-in-out 1.3s infinite;
    }
    .box .box__ghost .symbol:nth-child(3) {
      opacity: .2;
      animation: shine 3s ease-in-out .5s infinite;
    }
    .box .box__ghost .symbol:nth-child(3):before,
    .box .box__ghost .symbol:nth-child(3):after {
      content: '';
      width: 12px;
      height: 4px;
      background: #fff;
      position: absolute;
      border-radius: 5px;
      top: 5px;
      left: 40px;
    }
    .box .box__ghost .symbol:nth-child(3):before {
      transform: rotate(90deg);
    }
    .box .box__ghost .symbol:nth-child(3):after {
      transform: rotate(180deg);
    }
    .box .box__ghost .symbol:nth-child(4) {
      opacity: .2;
      animation: shine 6s ease-in-out 1.6s infinite;
    }
    .box .box__ghost .symbol:nth-child(4):before,
    .box .box__ghost .symbol:nth-child(4):after {
      content: '';
      width: 15px;
      height: 4px;
      background: #fff;
      position: absolute;
      border-radius: 5px;
      top: 10px;
      right: 30px;
    }
    .box .box__ghost .symbol:nth-child(4):before {
      transform: rotate(45deg);
    }
    .box .box__ghost .symbol:nth-child(4):after {
      transform: rotate(-45deg);
    }
    .box .box__ghost .symbol:nth-child(5) {
      position: absolute;
      right: 5px;
      top: 40px;
      height: 12px;
      width: 12px;
      border: 3px solid;
      border-radius: 50%;
      border-color: #fff;
      opacity: .2;
      animation: shine 1.7s ease-in-out 7s infinite;
    }
    .box .box__ghost .symbol:nth-child(6) {
      opacity: .2;
      animation: shine 2s ease-in-out 6s infinite;
    }
    .box .box__ghost .symbol:nth-child(6):before,
    .box .box__ghost .symbol:nth-child(6):after {
      content: '';
      width: 15px;
      height: 4px;
      background: #fff;
      position: absolute;
      border-radius: 5px;
      bottom: 65px;
      right: -5px;
    }
    .box .box__ghost .symbol:nth-child(6):before {
      transform: rotate(90deg);
    }
    .box .box__ghost .symbol:nth-child(6):after {
      transform: rotate(180deg);
    }
    .box .box__ghost .box__ghost-container {
      background: #fff;
      width: 100px;
      height: 100px;
      border-radius: 100px 100px 0 0;
      position: relative;
      margin: 0 auto;
      animation: upndown 3s ease-in-out infinite;
    }
    .box .box__ghost .box__ghost-container .box__ghost-eyes {
      position: absolute;
      left: 50%;
      top: 45%;
      height: 12px;
      width: 70px;
    }
    .box .box__ghost .box__ghost-container .box__ghost-eyes .box__eye-left {
      width: 12px;
      height: 12px;
      background: #332F63;
      border-radius: 50%;
      margin: 0 10px;
      position: absolute;
      left: 0;
    }
    .box .box__ghost .box__ghost-container .box__ghost-eyes .box__eye-right {
      width: 12px;
      height: 12px;
      background: #332F63;
      border-radius: 50%;
      margin: 0 10px;
      position: absolute;
      right: 0;
    }
    .box .box__ghost .box__ghost-container .box__ghost-bottom {
      display: flex;
      position: absolute;
      top: 100%;
      left: 0;
      right: 0;
    }
    .box .box__ghost .box__ghost-container .box__ghost-bottom div {
      flex-grow: 1;
      position: relative;
      top: -10px;
      height: 20px;
      border-radius: 100%;
      background-color: #fff;
    }
    .box .box__ghost .box__ghost-container .box__ghost-bottom div:nth-child(2n) {
      top: -12px;
      margin: 0 -0px;
      border-top: 15px solid #332F63;
      background: transparent;
    }
    .box .box__ghost .box__ghost-shadow {
      height: 20px;
      box-shadow: 0 50px 15px 5px #3B3769;
      border-radius: 50%;
      margin: 0 auto;
      animation: smallnbig 3s ease-in-out infinite;
    }
    .box .box__description {
      position: absolute;
      bottom: 30px;
      left: 50%;
      transform: translateX(-50%);
    }
    .box .box__description .box__description-container {
      color: #fff;
      text-align: center;
      width: 200px;
      font-size: 16px;
      margin: 0 auto;
    }
    .box .box__description .box__description-container .box__description-title {
      font-size: 24px;
      letter-spacing: .5px;
    }
    .box .box__description .box__description-container .box__description-text {
      color: #8C8AA7;
      line-height: 20px;
      margin-top: 20px;
    }
    .box .box__description .box__button {
      display: block;
      position: relative;
      background: #FF5E65;
      border: 1px solid transparent;
      border-radius: 50px;
      height: 50px;
      text-align: center;
      text-decoration: none;
      color: #fff;
      line-height: 50px;
      font-size: 18px;
      padding: 0 70px;
      white-space: nowrap;
      margin-top: 25px;
      transition: background .5s ease;
      overflow: hidden;
    }
    .box .box__description .box__button:before {
      content: '';
      position: absolute;
      width: 20px;
      height: 100px;
      background: #fff;
      bottom: -25px;
      left: 0;
      border: 2px solid #fff;
      transform: translateX(-50px) rotate(45deg);
      transition: transform .5s ease;
    }
    .box .box__description .box__button:hover {
      background: transparent;
      border-color: #fff;
    }
    .box .box__description .box__button:hover:before {
      transform: translateX(250px) rotate(45deg);
    }
    @keyframes upndown {
      0% {
        transform: translateY(5px);
      }
      50% {
        transform: translateY(15px);
      }
      100% {
        transform: translateY(5px);
      }
    }
    @keyframes smallnbig {
      0% {
        width: 90px;
      }
      50% {
        width: 100px;
      }
      100% {
        width: 90px;
      }
    }
    @keyframes shine {
      0% {
        opacity: .2;
      }
      25% {
        opacity: .1;
      }
      50% {
        opacity: .2;
      }
      100% {
        opacity: .2;
      }
    }

最后再上资源

源码代码均为网友分享,山河只做了修复效果或者bug。

前端 CDN 公共库大全一览

大家好我是山河,今天给大家总结一个前端CDN公共库大全哈,帮助各位开发者快速找到适合你的最佳选择。

CDN公共库是指将常用的JS库存放在CDN节点,以方便广大开发者直接调用。

https://www.jsdelivr.com/

使用最为广泛的CDN了,除了有静态库的加速外,还有npm\github\WordPress加速,2021年底国内备案被取消了,现在用cf的cdn,国内速度可想而知。

https://developers.google.com/speed/libraries

Google出品,必属精品了,谷歌CDN库,肯定很全,当然国内访问不了。

https://docs.microsoft.com/en-us/aspnet/ajax/cdn/overview

微软CDN库,该服务是免费的,不需任何注册,可用于商业性或非商业性用途

https://cdnjs.com/

站点是国外的,CDNJS 拥有非常完整的 JavaScript 库,你还可以提交 js库,审核通过就能用。

lib.sinaapp.com

新浪云计算CDN公共库,节点有北京和广州,国内速度飞快

http://jscdn.upai.com/

又拍云js库,又拍云提供了常用的JavaScript库CDN服务

http://staticfile.org/

七牛云提供的CDN库。

http://cdn.bytedance.com/

字节跳动静态资源公共库,国内大公司。

https://www.bootcdn.net

BootCDN 是猫云联合 Bootstrap 中文网 共同支持并维护的前端开源项目免费 CDN 服务,为Bootstrap、jQuery、React、Vue.js 一样优秀的前端开源项目提供稳定、快速的免费 CDN 加速服务,国内节点多。

PS:(官网通知)BootCDN 对外提供服务的域名已经于两年前(即 2020 年)变更为新域名 cdn.bootcdn.net,
老域名 cdn.bootcss.com 将于 2022 年 3 月 31 日下线。
请尽快切换到新域名,以免影响贵站功能!!!

https://cdnjs.net/

免费开源前端公共库,同步的cdnjs的资源,此公共库CDN加速服务始于2014年

https://cdn.baomitu.com/

60前端资源库是由奇舞团支持并的开源项目CDN,支持HTTPS和HTTP/2,囊括上千个前端资源库维护和Google均等库。同步cdnjs的资源。

本篇文章是由山河整理的前端CDN库大全。

本站采用创作共用版权 CC BY-NC-SA 3.0 CN 许可协议,转载或复制请注明出处

山河博客-404错误页图片

分享一个自定义好看的二次元风格的404错误页HTML5单页

大家好我是山河,今天我给大家分享一个二次元风格的404错误页。

山河好不容易修复了那位网友发给我的404错误页,结果刚把文章发出去没半天,又给我找事情做了,这次发了一个二次元风格的404错误页,山河修复了一些没用的代码,还剩下一小段CSS代码没修复,那段是动画的,我试了一下,能正常运行,我也就不管了,但是山河的代码编辑器居然显示警告⚠,浏览器里打开f12一看,没毛病报错,那就不管了。

不说了,先上个效果图片给大家看看长啥样

对了,这款404错误页是有音乐的,但是山河没法录制给大家听。

山河博客-二次元404错误页
山河博客-二次元404错误页

页面是有动态效果的,头像触碰会旋转,文字会跳动,就像这样

山河博客-二次元404错误页
山河博客-二次元404错误页

好了,介绍就到这里,文章结束

PS:本页面为网友分享给山河,山河仅做了修复,页面如有联系信息则为原作者,另外,如有侵犯您的权益,请联系山河删除。

SEO优化

站长疑问?如何优化SEO

今天山河来谈一个关于网站的一个对搜索引擎的优化的问题,很多朋友对如何优化SEO啊有非常多的疑问。咱们今天给大家解决这个问题

先给大家理解什么叫SEO,所谓SEO呢,即为(Search Engine Optimization): 翻译过来就是搜索引擎优化的意思。

SEO图片
SEO

而优化SEO呢就是一种利用搜索引擎的搜索规则来提高目前网站在有关搜索引擎内的自然排名的方式,通俗一点就是提升网站搜索关键词的排名,优化SEO的方式包括站外 SEO 和站内 SEO 两方面。

我就给大家讲解几个必备的:

1.域名必须备案,备案增加域名的可信度,百度对这个比较看重

2.各大搜索引擎平台进行提交,百度,搜狗,360,神马,头条,国外的就不用了,必应和谷歌这两个是最频繁的,其他国外搜索引擎平台大多被墙了,用户不多。

3.站内优化,页面的关键词,描述,标题要做好,标题和关键词要一针见血,必须要贴近你这个页面的内容,另外网站标题不能超过两个关键词,另外图片,超链接要加上title属性,超链接设置属性为要跳到新窗口。

4.站外优化,站外优化,友情链接肯定是必备的,大量的优质友情链接,能促进蜘蛛循环,形成蜘蛛池,蜘蛛越多自然就有好处,要注意,交换友情链接的时候记得要看对方是不是给你的超链接标签加上了rel=”nofollow” 属性,这个属性会告诉蜘蛛不要追踪特定的网页链接。

5.初期成立的网站呢,前几个星期要形成规律的发帖子方式,这个是一个大佬当年跟我说的,不知道现在还有不有用。

6.404错误页优化,减少用户流失

之外还要注意保证网站的稳定。

本篇文章就讲到这里了,我是山河,感谢大家看此文章。

文章为山河手动码出来的原创文章

本站采用创作共用版权 CC BY-NC-SA 3.0 CN 许可协议,转载或复制请注明出处

域名不备案使用国内服务器方法

大家好我是山河,最近腾讯服务器打折力度很大啊,不少人都淘了好几台屯着,当然山河也没闲着,也搞了两台,但是有个问题,主域名用上了,给其他服务器用不合适,可是现在备案也要花10-20天的,中间这段时间服务器岂不是闲着了,怎么解决呢?

当然就是绕备案了,绕备案目前有两种方法,且听山河细细道来。

第一种:

(新版图片教程请点击此链接):域名绕过备案 – 山河技术分享 (shanhe.info)

裸81/82端口,什么叫裸81/82端口呢?我们网站啊是走80端口的,为HTTP(HyperText Transport Protocol)协议开发的,即为万维网(World Wide Web)协议,我们HTTP地址,就是所谓的网址,一般访问是xx.com:80的,但是我们只输入网址就行了,因为那些浏览器啊会自动给我们网址加上80端口,而国内服务器80端口是需要备案域名才能访问的,如果我们没备案就会被拦截,访问不了,所以我们可以裸81或者82端口。

81 82端口呢,是重定向端口,我们只需要服务器绑定域名的时候绑定 域名:81 或者 域名:82 就可以了。

域名解析IP的时候不需要加上端口,服务器绑定域名的时候则需要。

然后我们访问网站的时候需要 域名:81 / 域名:82 才行,这样就能实现绕端口了

当然,如果你们不想输入 81 82端口才能访问,我们也可以隐藏。

这就需要第二种方法了

第二种方法:

借助ssl来隐藏端口

我们搞完第一种了呢之后,申请一个ssl证书,(ssl证书有很多地方可以申请免费的,腾讯,宝塔等都可以)

然后呢,然后我就懒得讲了?

第二种方法请百度,打字太累。

PHP学习之安装PHP环境xampp

大家好我是山河,今天我给大家写一篇PHP安装环境的教程

很多小白在初学的时候啊,都不懂怎么配置环境,今天山河就来给大家带上如何安装配置PHP环境的教程,并附上资源包

本教程是手把手指导,配图,傻瓜式教程,包会!

为什么要选择XAMPP呢?因为xampp集成环境是带上了PHP+MYSQL和ftp等东西,装备齐全,而且面板简洁易懂,适合初学小白。

xampp安装在底部

好了,开始教程:

演示系统是win10,win7/8也大同小异

下载好本网站提供的xampp安装包之后,打开会是这样

 

然后解压缩,就变成这样

接下来点击xampp安装包,出现

点击yes,接下来

一直点next

根据需求选择你要的东西,当然默认是全选的,咱们先不管,继续next

安装目录选择,可以更改,然后继续next

继续next

意思是现在将要安装xampp到你的电脑上,点next就行了

然后就开始安装

等进度条结束即可

最后点击finish(结束)即可

之后打开你安装的目录,我安装在C盘

点击xampp的文件夹

找到xampp-control 带橙色图标的应用程序

点击

选哪国语言都可以,我选的是美国,英语

之后就会弹出

点击Apache和Mysql的start即可

好了,教程结束

还有什么问题可以发邮件给山河,山河一一解答。

另外求赞助,广告等

本文为山河博客,山河技术分享原创文章,转载请标注原创以及本文地址!

谢谢各位浏览本网站。