前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网站右下角[来源网站]显示【前端特效】

网站右下角[来源网站]显示【前端特效】

作者头像
无道
发布2019-11-13 16:00:32
7510
发布2019-11-13 16:00:32
举报
文章被收录于专栏:无道编程无道编程

背景

当别人从其他网站访问自己的网站时,如果在自己网站右下角有提示“欢迎来自XXX的朋友访问本站”,是不是逼格满满?!

效果演示

右下角来源网站窗口展示
右下角来源网站窗口展示

知识点

CSS

css需要了解定位(fixed,absolute) ,其余的话就是一些很基础的CSS样式知识了。

JavaScript

1、需要用到location对象中的pathname以及documentreferer属性。即:location.pathnamedocument.referer

2、以及一定 的正则知识:用来匹配来源域名。

3、还用到了jquery 操作dom方便点,需要的可自行换成原生js。

代码讲解

CSS

代码语言:javascript
复制
<style type="text/css">
    .from-notice {
        display: none;
        position: fixed;
        bottom: 20px;
        right: 20px;
        /*width: 250px;*/
        height: 30px;
        background: #00cec9;
        padding: 10px;
        border-radius: 5px;
        color: #fff;
        line-height: 34px;
        z-index: 99999;
    }

    .from-notice .site {
        font-weight: bold;
        color: #000;
    }

    .from-notice .times {
        position: absolute;
        right: 9px;
        top: -6px;
        font-size: 18px;
        font-weight: bold;
        cursor: pointer;
    }

    .from-notice .times:hover {
        color: #e74c3c;
    }
</style>

.from-notice 是整个父容器。采用fixed定位。 .times 是右上的x,定位到右上。

JavaScript

代码语言:javascript
复制
<script type="text/javascript">
    let from_site = {
        'baidu.com':'百度搜索',
        'google.com':'谷歌搜索',
        'google.com.hk':'谷歌搜索',
        'misiyu.cn':'迷思雨博客',
        'hu60.net':'虎绿林',
        '127.0.0.1:5500':'本地'
    };
    let from = document.referrer;
    let from_domain = get_domain(from);
    let timer = null;
    if (from_domain && location.host.indexOf(from_domain) === -1) {


        let times = $("<span class=\"times\">&#215;</span>").click(function () {
            $(this).parent('.from-notice').slideUp(500);
            clearTimeout(timer);
        });
        let notice_site = from_site.hasOwnProperty(from_domain) ? from_site[from_domain] : from_domain;

        let msg = `欢迎来自 <span class="site">${notice_site}</span> 的朋友访问本博客。`;

        let showDom = $("<div></div>").addClass("from-notice").html(msg);
        times.appendTo(showDom);
        showDom.appendTo($("body")).show(600);

        timer = setTimeout(function () {
            $('.from-notice').slideUp(500);
        }, 3000);

    }


    function get_domain(url) {
        let result = url.match(/https?:\/\/(?:[w]){0,3}\.?(.*?)\//);
        // console.log(result)
        // console.log()
        if (result && result.length >= 2) {
            return result[1];
        } else {
            return null;
        }
    }
</script>

get_domain方法里面通过正则获取来源域名。

默认会显示网站域名(在from_site对象里面定义的,该对象key和value都是字符串类型。)

如下:

代码语言:javascript
复制
let from_site = {
    'baidu.com':'百度搜索',
    'google.com':'谷歌搜索',
    'google.com.hk':'谷歌搜索',
    'misiyu.cn':'迷思雨博客',
    'hu60.net':'虎绿林',
    '127.0.0.1:5500':'本地'
};

注意

1、代码采用了let 申明变量,不兼容低版本浏览器,想要兼容换成var

2、本地演示想要查看效果的话需要将一判断条件删除:

截图-1563275632
截图-1563275632

因为这是判断是否是同网站的。

3、需要用户服务器打开test.html然后跳转到notice.html,方能看到效果。

也即不能一文件系统打开文件。如下:

截图-1563275713
截图-1563275713

要以服务器形式打开,因为才能获取到referer

截图-1563275767
截图-1563275767

服务器推荐使用vscode的Live Server 参考:https://www.misiyu.cn/article/6.html#HTML%E7%83%AD%E5%88%B7%E6%96%B0

demo下载

文件下载

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 效果演示
  • 知识点
  • 代码讲解
  • 注意
  • demo下载
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档