html 评论和浏览图标,多说自定义CSS动感头像跟多说评论显示User Agent的那些小事...

155206113.png

前言

多说是一款社会化评论系统,她改变了网站与用户之间,用户与用户之间的互动方式。当然Disqus在大家心目中可能更加具有影响力,而我选择多说的原因也很简单,一句话概括来说就是“接地气的本地化评论托管服务”。之前看到很多朋友自豪的使用WordPress时会选择多说作为第三方评论插件,民间的高手们也根据官方的API开发出一些十分有趣的隐藏属性。因为现在自己使用GitHub+Hexo搭建的静态Blog,也希望通过多说自定义CSS和多说评论显示User Agent让评论动感起来,文章记录了自己所执行的真实步骤,扩展阅读和原文中也会标注参考链接和注意点,embed.default.css和embed.js文件托管在GitHub上,欢迎大家分享自己的经验,我们一起完善这些简单而有趣的小功能。

感谢多说团队和那些无私的开发者们

更新历史

2015年04月25日 - 修复Font Awesome图标显示,增加动态效果图展示

2015年04月24日 - 初稿

阅读原文 - http://wsgzao.github.io/post/duoshuo/

扩展阅读

duoshuo-mod - https://github.com/wsgzao/duoshuo-mod

出色的自定义效果展示 - http://dev.duoshuo.com/docs/4ff1cfd0397309552c000017

HelloDog Index - http://wsgzao.github.io/index/#Hexo

多说自定义CSS

主要参考@V说,他的文章中还分享了额外9种特效,满足大家Duang的欲望哈

多说自定义CSS 让你的多说评论动感起来 - http://www.vsay.cn/one-more-custom-css-lets-you-say-comments-city.html

155206114.gif

头像水平翻转

/*Head Start*/

#ds-thread #ds-reset ul.ds-comments-tabs li.ds-tab a.ds-current {

border:0px;

color:#6D6D6B;

text-shadow:none;

background:#F3F3F3;

}

#ds-thread #ds-reset .ds-highlight {

font-family:Microsoft YaHei, "Helvetica Neue", Helvetica, Arial, Sans-serif;

;font-size:100%;

color:#6D6D6B !important;

}

#ds-thread #ds-reset ul.ds-comments-tabs li.ds-tab a.ds-current:hover {

color:#696a52;

background:#F2F2F2;

}

#ds-thread #ds-reset a.ds-highlight:hover {

color:#696a52 !important;

}

#ds-thread {

padding-left:30px;

}

#ds-thread #ds-reset li.ds-post,#ds-thread #ds-reset #ds-hot-posts {

overflow:visible;

}

#ds-thread #ds-reset .ds-post-self {

padding:10px 0 10px 10px;

}

#ds-thread #ds-reset li.ds-post,#ds-thread #ds-reset .ds-post-self {

border:0 !important;

}

#ds-reset .ds-avatar, #ds-thread #ds-reset ul.ds-children .ds-avatar {

top:15px;

left:-20px;

padding:5px;

width:36px;

height:36px;

box-shadow:-1px 0 1px rgba(0,0,0,.15) inset;

border-radius:46px;

background:#FAFAFA;

}

#ds-thread .ds-avatar a {

display:inline-block;

padding:1px;

width:32px;

height:32px;

border:1px solid #b9baa6;

border-radius:50%;

background-color:#fff !important;

}

#ds-thread .ds-avatar a:hover {

}

#ds-thread .ds-avatar > img {

margin:2px 0 0 2px;

}

#ds-thread #ds-reset .ds-replybox {

box-shadow:none;

}

#ds-thread #ds-reset ul.ds-children .ds-replybox.ds-inline-replybox a.ds-avatar,

#ds-reset .ds-replybox.ds-inline-replybox a.ds-avatar {

left:0;

top:0;

padding:0;

width:32px !important;

height:32px !important;

background:none;

box-shadow:none;

}

#ds-reset .ds-replybox.ds-inline-replybox a.ds-avatar img {

width:32px !important;

height:32px !important;

border-radius:50%;

}

#ds-reset .ds-replybox a.ds-avatar,

#ds-reset .ds-replybox .ds-avatar img {

padding:0;

width:50px !important;

height:50px !important;

border-radius:5px;

}

#ds-reset .ds-avatar img {

width:32px !important;

height:32px !important;

border-radius:32px;

box-shadow:0 1px 3px rgba(0, 0, 0, 0.22);

-webkit-transition:.8s all ease-in-out;

-moz-transition:.4s all ease-in-out;

-o-transition:.4s all ease-in-out;

-ms-transition:.4s all ease-in-out;

transition:.4s all ease-in-out;

}

.ds-post-self:hover .ds-avatar img {

-webkit-transform:rotateX(360deg);

-moz-transform:rotate(360deg);

-o-transform:rotate(360deg);

-ms-transform:rotate(360deg);

transform:rotate(360deg);

}

#ds-thread #ds-reset .ds-comment-body {

-webkit-transition-delay:initial;

-webkit-transition-duration:0.4s;

-webkit-transition-property:all;

-webkit-transition-timing-function:initial;

background:#F7F7F7;

padding:15px 15px 15px 47px;

border-radius:5px;

box-shadow:#B8B9B9 0 1px 3px;

border:white 1px solid;

}

#ds-thread #ds-reset ul.ds-children .ds-comment-body {

padding-left:15px;

}

#ds-thread #ds-reset .ds-comment-body p {

color:#787968;

}

#ds-thread #ds-reset .ds-comments {

border-bottom:0px;

}

#ds-thread #ds-reset .ds-powered-by {

display:none;

}

#ds-thread #ds-reset .ds-comments a.ds-user-name {

font-weight:normal;

color:#3D3D3D !important;

}

#ds-thread #ds-reset .ds-comments a.ds-user-name:hover {

color:#D32 !important;

}

#ds-thread #ds-reset #ds-bubble {

display:none !important;

}

#ds-thread #ds-reset #ds-hot-posts {

border:0;

}

#ds-reset #ds-hot-posts .ds-gradient-bg {

background:none;

}

#ds-thread #ds-reset .ds-comment-body:hover {

background-color:#F1F1F1;

-webkit-transition-delay:initial;

-webkit-transition-duration:0.4s;

-webkit-transition-property:all;

-webkit-transition-timing-function:initial;

}

/*Head End*/

多说后台自定义CSS

设置步骤超级简单,登录多说后台->设置->基本设置->自定义CSS

155206115.jpg

多说评论显示UA(User Agent)

主要参考@myhloli和@搜索客,灰常感谢

多说评论框UA显示/博主标记 - http://myhloli.com/duoshuo-ua-and-admin-tab.html

多说回复后显示浏览器及操作系统信息(Useragent) - http://ssk.91txh.com/209

本地化embed.js

1.下载embed.js

多说官方 - http://static.duoshuo.com/embed.js

偷懒可以下载我当前使用的 - http://wsgzao.github.io/embed.js

2.获取多说ID

方法一:在文章下方登录后评论点击头像可获取多说ID

方法二:访问多说后台,http://duoshuo.com/settings/ ,点击你的用户名,地址栏中会出现如如下的ID地址

http://duoshuo.com/profile/867394/

3.本地修改embed.js

注意修改e.user_id多说ID,可以自定义ssk前端显示昵称

//移动客户端判断开始

function checkMobile() {

var isiPad = navigator.userAgent.match(/iPad/i) != null;

if (isiPad) {

return false;

}

var isMobile = navigator.userAgent.match(/iphone|android|phone|mobile|wap|netfront|x11|java|opera mobi|opera mini|ucweb|windows ce|symbian|symbianos|series|webos|sony|blackberry|dopod|nokia|samsung|palmsource|xda|pieplus|meizu|midp|cldc|motorola|foma|docomo|up.browser|up.link|blazer|helio|hosin|huawei|novarra|coolpad|webos|techfaith|palmsource|alcatel|amoi|ktouch|nexian|ericsson|philips|sagem|wellcom|bunjalloo|maui|smartphone|iemobile|spice|bird|zte-|longcos|pantech|gionee|portalmmm|jig browser|hiptop|benq|haier|^lct|320x320|240x320|176x220/i) != null;

if (isMobile) {

return true;

}

return false;

}

//移动客户端判断结束

//管理员判断开始

function sskadmin(e) {

var ssk = '';

if (e.user_id == 867394) {

if (checkMobile()) {

ssk = 'R00T
';

} else {

ssk = 'R00T';

}

} else {

if (checkMobile()) {

ssk = '
';

}

}

return ssk;

}

//管理员判断结束

//显UA开始

function ua(e) {

var r = new Array;

var outputer = '';

if (r = e.match(/FireFox\/([^\s]+)/ig)) {

var r1 = r[0].split("/");

outputer = ' Mozilla FireFox' + ' ' + r1[1]

} else if (r = e.match(/Maxthon([\d]*)\/([^\s]+)/ig)) {

var r1 = r[0].split("/");

outputer = ' Maxthon' + ' ' + r1[1]

} else if (r = e.match(/BIDUBrowser([\d]*)\/([^\s]+)/ig)) {

var r1 = r[0].split("/");

outputer = ' 百度浏览器' + ' ' + r1[1]

} else if (r = e.match(/UBrowser([\d]*)\/([^\s]+)/ig)) {

var r1 = r[0].split("/");

outputer = ' UCBrowser' + ' ' + r1[1]

} else if (r = e.match(/UCBrowser([\d]*)\/([^\s]+)/ig)) {

var r1 = r[0].split("/");

outputer = ' UCBrowser' + ' ' + r1[1]

} else if (r = e.match(/MetaSr/ig)) {

outputer = ' 搜狗浏览器'

} else if (r = e.match(/2345Explorer/ig)) {

outputer = ' 2345王牌浏览器'

} else if (r = e.match(/2345chrome/ig)) {

outputer = ' 2345加速浏览器'

} else if (r = e.match(/LBBROWSER/ig)) {

outputer = ' 猎豹安全浏览器'

} else if (r = e.match(/MicroMessenger\/([^\s]+)/ig)) {

var r1 = r[0].split("/");

outputer = ' 微信' + ' ' + r1[1]

/*.split('/')[0]*/

} else if (r = e.match(/QQBrowser\/([^\s]+)/ig)) {

var r1 = r[0].split("/");

outputer = ' QQ浏览器' + ' ' + r1[1]

/*.split('/')[0]*/

} else if (r = e.match(/QQ\/([^\s]+)/ig)) {

var r1 = r[0].split("/");

outputer = ' QQ浏览器' + ' ' + r1[1]

/*.split('/')[0]*/

} else if (r = e.match(/MiuiBrowser\/([^\s]+)/ig)) {

var r1 = r[0].split("/");

outputer = ' Miui浏览器' + ' ' + r1[1]

/*.split('/')[0]*/

} else if (r = e.match(/Chrome([\d]*)\/([^\s]+)/ig)) {

var r1 = r[0].split("/");

outputer = ' Chrome' + ' ' + r1[1]

/*.split('.')[0]*/

} else if (r = e.match(/safari\/([^\s]+)/ig)) {

var r1 = r[0].split("/");

outputer = ' Apple Safari' + ' ' + r1[1]

} else if (r = e.match(/Opera[\s|\/]([^\s]+)/ig)) {

var r1 = r[0].split("/");

outputer = ' Opera' + ' ' + r1[1]

} else if (r = e.match(/Trident\/7.0/gi)) {

outputer = ' Internet Explorer 11'

} else if (r = e.match(/MSIE\s([^\s|;]+)/gi)) {

outputer = ' Internet Explorer' + ' ' + r[0]

/*.replace('MSIE', '').split('.')[0]*/

} else {

outputer = ' 其它浏览器'

}

if (checkMobile()) {

Mobile = '
';

} else {

Mobile = '';

}

return outputer + "" + Mobile;

}

function os(e) {

var os = '';

if (e.match(/win/ig)) {

if (e.match(/nt 5.1/ig)) {

os = ' Windows XP'

} else if (e.match(/nt 6.1/ig)) {

os = ' Windows 7'

} else if (e.match(/nt 6.2/ig)) {

os = ' Windows 8'

} else if (e.match(/nt 6.3/ig)) {

os = ' Windows 8.1'

} else if (e.match(/nt 10.0/ig)) {

os = ' Windows 10'

} else if (e.match(/nt 6.0/ig)) {

os = ' Windows Vista'

} else if (e.match(/nt 5/ig)) {

os = ' Windows 2000'

} else {

os = ' Windows'

}

} else if (e.match(/android/ig)) {

os = ' Android'

} else if (e.match(/ubuntu/ig)) {

os = ' Ubuntu'

} else if (e.match(/linux/ig)) {

os = ' Linux'

} else if (e.match(/mac/ig)) {

os = ' Mac OS X'

} else if (e.match(/unix/ig)) {

os = ' Unix'

} else if (e.match(/symbian/ig)) {

os = ' Nokia SymbianOS'

} else {

os = ' 其它操作系统'

}

return os + "";

}

//显UA结束

4.上传embed.js

我的做法上传到GitHub,其它类似七牛或者云主机的方法都可以

http://wsgzao.github.io/embed.js

5.修改多说调用地址

其它平台以此类推,我自己的做法ds.src = ‘//wsgzao.github.io/embed.js’;

var duoshuoQuery = {short_name:""};

(function() {

var ds = document.createElement('script');

ds.type = 'text/javascript';ds.async = true;

ds.src = '//wsgzao.github.io/embed.js';

ds.charset = 'UTF-8';

(document.getElementsByTagName('head')[0]

|| document.getElementsByTagName('body')[0]).appendChild(ds);

})();

6.增加Font Awesome

官方下载压缩包 - http://fontawesome.io/

解压其中的fonts和css,根据你的Blog类型上传至指定目录引入CSS链接即可生效

7.多说后台自定义CSS

请参考上文方法加入多说自定义CSS

/*UA Start*/

span.ua {

margin:0 1px!important;

color:#FFFFFF!important;

/*text-transform: Capitalize!important;

float: right!important;

line-height: 18px!important;*/;

}

.ua_other.os_other {

background-color:#ccc!important;

color:#fff;

border:1px solid #BBB!important;

border-radius:4px;

}

.ua_ie {

background-color:#428bca!important;

border-color:#357ebd!important;

border-radius:4px;

padding:0 5px!important;

}

.ua_firefox {

background-color:#f0ad4e!important;

border-color:#eea236!important;

border-radius:4px;

padding:0 5px!important;

}

.ua_maxthon {

background-color:#7373B9!important;

border-color:#7373B9!important;

border-radius:4px;

padding:0 5px!important;

}

.ua_ucweb {

background-color:#FF740F!important;

border-color:#d43f3a!important;

border-radius:4px;

padding:0 5px!important;

}

.ua_sogou {

background-color:#78ACE9!important;

border-color:#4cae4c!important;

border-radius:4px;

padding:0 5px!important;

}

.ua_2345explorer {

background-color:#2478B8!important;

border-color:#4cae4c!important;

border-radius:4px;

padding:0 5px!important;

}

.ua_2345chrome {

background-color:#F9D024!important;

border-color:#4cae4c!important;

border-radius:4px;

padding:0 5px!important;

}

.ua_mi {

background-color:#FF4A00!important;

border-color:#4cae4c!important;

border-radius:4px;

padding:0 5px!important;

}

.ua_lbbrowser {

background-color:#FC9D2E!important;

border-color:#4cae4c!important;

border-radius:4px;

padding:0 5px!important;

}

.ua_chrome {

background-color:#EE6252!important;

border-color:#4cae4c!important;

border-radius:4px;

padding:0 5px!important;

}

.ua_qq {

background-color:#3D88A8!important;

border-color:#4cae4c!important;

border-radius:4px;

padding:0 5px!important;

}

.ua_apple {

background-color:#E95620!important;

border-color:#4cae4c!important;

border-radius:4px;

padding:0 5px!important;

}

.ua_opera {

background-color:#d9534f!important;

border-color:#d43f3a!important;

border-radius:4px;

padding:0 5px!important;

}

.os_vista,.os_2000,.os_windows,.os_xp,.os_7,.os_8,.os_8_1 {

background-color:#39b3d7!important;

border-color:#46b8da!important;

border-radius:4px;

padding:0 5px!important;

}

.os_android {

background-color:#98C13D!important;

border-color:#01B171!important;

border-radius:4px;

padding:0 5px!important;

}

.os_ubuntu {

background-color:#DD4814!important;

border-color:#01B171!important;

border-radius:4px;

padding:0 5px!important;

}

.os_linux {

background-color:#3A3A3A!important;

border-color:#1F1F1F!important;

border-radius:4px;

padding:0 5px!important;

}

.os_mac {

background-color:#666666!important;

border-color:#1F1F1F!important;

border-radius:4px;

padding:0 5px!important;

}

.os_unix {

background-color:#006600!important;

border-color:#1F1F1F!important;

border-radius:4px;

padding:0 5px!important;

}

.os_nokia {

background-color:#014485!important;

border-color:#1F1F1F!important;

border-radius:4px;

padding:0 5px!important;

}

.sskadmin {

background-color:#00a67c!important;

border-color:#01B171!important;

border-radius:4px;

padding:0 5px!important;

}

/*UA End*/

其它开源方案

欢迎大家积极反馈,提出自己的想法^_^

Make DUOSHUO Show UA - http://git.oschina.net/huhuhuhu/Make-DUOSHUO-Show-UA/tree/master

ua-parser-js - https://github.com/faisalman/ua-parser-js

duoshuo-mod - https://github.com/wsgzao/duoshuo-mod

前端识别

大家可以猛击测试各种UA

Useragent.js - http://zsxsoft.github.io/useragent.js/withimage.html

UAParser.js - http://faisalman.github.io/ua-parser-js/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里给你提供一种使用自定义类名和animate.css动画库给一张图片添加入场动画的示例。使用animate.css可以方便地实现CSS动画效果,具体可以根据需求自定义。 首先,需要在HTML文件中引入animate.css的CDN链接: ```html <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" /> ``` 然后,HTML代码如下: ```html <div class="image-wrapper animate__animated"> <img src="image.jpg" alt="图片"> </div> ``` CSS代码如下: ```css .image-wrapper { position: relative; display: inline-block; } .image-wrapper.animate__animated { animation-duration: 1s; /* 设置动画持续时间 */ animation-delay: 0.5s; /* 设置动画延迟时间 */ animation-fill-mode: both; /* 设置动画结束后保持最后状态 */ animation-name: slideInLeft; /* 设置动画名称 */ } @keyframes slideInLeft { from { transform: translateX(-100%); } to { transform: translateX(0); } } .image-wrapper img { display: block; max-width: 100%; height: auto; } ``` 这段代码使用了animate.css库中的slideInLeft动画效果,通过给`.image-wrapper`添加类名`.animate__animated`来触发动画效果。其中,`.image-wrapper.animate__animated`使用了CSS3的动画属性animation,通过设置animation-duration、animation-delay、animation-fill-mode、animation-name属性来定义动画效果。同时,利用@keyframes定义了从左侧平移进入的动画效果。最后,`.image-wrapper img`设置了图片的基本样式,其中max-width: 100%可以确保图片的宽度不会超出其容器的宽度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值