title: 多说样式折腾记录 — 添加 UA 浏览器标识、旋转头像等 categories: - 术业专攻 tags: - 多说 - CSS - UA - JavaScript - Hexo date: 2015-09-29 01:24:41 toc: author: comments: original: permalink: duoshuo-style ---

前言

简单记录自己个性化多说样式的过程,参考的教程和借鉴的代码基本包含在 [参考资料](/2015/09/29/duoshuo-style/#参考资料) 列表中,有不明白的可以试着查阅这些资料。 ### 相关下载 > 自用完整多说 CSS 样式文件: [duosuo.css by MOxFIVE][0] > 自用多说 embed-js 文件: [embed-js by MOxFIVE][0a] [0]: /resources/duosuo.css [0a]: /resources/embed.js ## UA 浏览器标识 ![UA 浏览器标识][1] [1]: /resources/UA-label.png ### 本地化 embed-js  1. 先下载我修改好的 [embed.js][0a],文件源于网页分享,稍作调整: > - 去掉了略显累赘的浏览器版本号; > - 修改了部分浏览器和系统的图标。  2. 获取多说数字 ID: > 访问 [多说后台](http://duoshuo.com/settings/),点击左侧你头像旁的昵称,之后会跳转到你的多说主页 `http://duoshuo.com/profile/你的数字ID/`,最后那几个数字就是你的数字 ID,记下备用。  3. 个人化 embed.js: > 将 `e.user_id` 的值修改为你的多说数字 ID。 ``` js function sskadmin(e) { var ssk = ''; if (e.user_id == 你的多说数字ID) ```  4. 云端化 embed.js: > 让你的专属 embed.js 能通过一个网址访问。 > - Hexo 博客的话,假设你把 embed.js 放到 `/themes/<主题名字>/source/js/` 文件夹下,部署云端后,你的文件地址就是 `博客地址/js/embed.js`。  5. 修改多说调用地址: > 修改多说代码中的 `ds.src` 为你的 `embed.js` 地址; > - 主题 [Yelee (v3.0)][2.1] 在 `yelee/layout/_partial/comments/duoshuo.ejs` 里修改。 ``` js var duoshuoQuery = {short_name:"<%=theme.duoshuo%>"}; (function() { var ds = document.createElement('script'); ds.type = 'text/javascript';ds.async = true; ds.src = 'http://moxfive.xyz/resources/embed.js'; /*上面是我自己的 embed.js 链接,请改为你自己的地址*/ ds.charset = 'UTF-8'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ds); })(); ``` ### 引入 [Font Awesome][2]   这里介绍下最快捷的方式,把下面代码放入对应 HTML head 头部即可。例如 Hexo 博客主题的通常是在 layout 文件夹下的 Head 文件中引入 [[G]][2b]。 > 主题 [Yelee][2.1] 和 [Yilia][2.2] 已自带 Font Awesome,无需再引入。 ``` html ``` [2.1]: https://github.com/MOxFIVE/hexo-theme-yelee "简而不减 Hexo 双栏博客主题" [2.2]: https://github.com/litten/hexo-theme-yilia "一个简洁优雅的 Hexo 主题" ### 添加对应 CSS   拷贝以下代码到多说 [后台自定义 CSS][2a] 框中保存。在网友分享基础上设置了透明度,没那么刺眼花哨了,顺便改了一下未识别 UA 的样式。 > CSS 有点繁琐,不清楚如何为这些 UA 设置 Class,只好一个个分开写了。 ``` css span.ua { display: inline-block !important; margin: auto 1px .3em !important; color: #fff !important; } .os_other { background-color: #bdb2a7!important; color: #fff; border: 1px solid #BBB!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_other { background-color: #bdb2a7!important; color: #fff; border: 1px solid #BBB!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_other { opacity: 1; } .os_other:hover { opacity: 1; } .ua_ie { background-color: #428bca!important; border-color: #357ebd!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_ie:hover { opacity: 1; } .ua_firefox { background-color: #f0ad4e!important; border-color: #eea236!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_firefox:hover { opacity: 1; } .ua_maxthon { background-color: #7373B9!important; border-color: #7373B9!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_maxthon:hover { opacity: 1; } .ua_ucweb { background-color: #FF740F!important; border-color: #d43f3a!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_ucweb:hover { opacity: 1; } .ua_sogou { background-color: #78ACE9!important; border-color: #4cae4c!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_sogou:hover { opacity: 1; } .ua_2345explorer { background-color: #2478B8!important; border-color: #4cae4c!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_2345explorer:hover { opacity: 1; } .ua_2345chrome { background-color: #F9D024!important; border-color: #4cae4c!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_2345chrome:hover { opacity: 1; } .ua_mi { background-color: #FF4A00!important; border-color: #4cae4c!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_mi:hover { opacity: 1; } .ua_lbbrowser { background-color: #FC9D2E!important; border-color: #4cae4c!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_lbbrowser:hover { opacity: 1; } .ua_chrome { background-color: #EE6252!important; border-color: #4cae4c!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_chrome:hover { opacity: 1; } .ua_qq { background-color: #3D88A8!important; border-color: #4cae4c!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_qq:hover { opacity: 1; } .ua_apple { background-color: #E95620!important; border-color: #4cae4c!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_apple:hover { opacity: 1; } .ua_opera { background-color: #d9534f!important; border-color: #d43f3a!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .ua_opera:hover { opacity: 1; } .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; opacity: .4; } .os_vista:hover,.os_2000:hover,.os_windows:hover,.os_xp:hover,.os_7:hover,.os_8:hover,.os_8_1:hover { opacity: 1; } .os_android { background-color: #98C13D!important; border-color: #01B171!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .os_android:hover { opacity: 1; } .os_ubuntu { background-color: #DD4814!important; border-color: #01B171!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .os_ubuntu:hover { opacity: 1; } .os_linux { background-color: #3A3A3A!important; border-color: #1F1F1F!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .os_linux:hover { opacity: 1; } .os_mac { background-color: #666666!important; border-color: #1F1F1F!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .os_mac:hover { opacity: 1; } .os_unix { background-color: #006600!important; border-color: #1F1F1F!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .os_unix:hover { opacity: 1; } .os_nokia { background-color: #014485!important; border-color: #1F1F1F!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .os_nokia:hover { opacity: 1; } /*UA End*/ ``` ### 显示博主标记 ![博主标记][1.1] [1.1]: /resources/root-label.png   分别添加以下代码到你的 embed.js 文件和多说自定义 CSS ,自己多说账户的评论旁将显示博主标记。如果你用的是我上面提供的 [embed.js](/resources/embed.js),那修改好 `e.user_id` 时博主标记应该已经显示了。 ``` js /*博主标记: 添加到 embed.js*/ function sskadmin(e) { var ssk = ''; if (e.user_id == 你的多说数字ID) { if (checkMobile()) { ssk = '博主

'; } else { ssk = '博主'; } } else { if (checkMobile()) { ssk = '

'; } } return ssk; } ``` ``` css /*博主标记 CSS*/ .sskadmin { background-color: #00a67c!important; border-color: #01B171!important; border-radius: 4px; padding: 0 5px!important; opacity: .4; } .sskadmin:hover { opacity: 1; } ``` [2]: http://fontawesome.io/get-started/ "Easy ways to get Font Awesome 4.4.0 onto your website" [2a]: http://wsgzao.github.io/post/duoshuo/#多说后台自定义CSS [2b]: https://github.com/MOxFIVE/M-Hexo-Blog/commit/95dbdbacf628e531902f55714f4dae57f3bab070 "feat: duoshuo style 个性化多说样式" ## 个性化 CSS 样式   通过网友教程,官方文档和审查元素工具个性化多说 CSS 样式。 ### 旋转头像 ![旋转头像](/resources/rotate.gif)   源于网友分享,修改了旋转度数,动画时间,内边距。 ``` css /*头像样式*/ #ds-reset .ds-avatar{background:none !important; box-shadow:none !important;} #ds-reset .ds-avatar img , #ds-thread #ds-reset ul.ds-children .ds-avatar img{width:50px !important;height: 50px !important;-webkit-transition: .9s;-moz-transition: .9s;-o-transition: .9s;-ms-transition: .9s;padding: 2px;border: 1px solid #ddd;background: #fff;} /*鼠标悬停旋转头像*/ .ds-post:hover .ds-avatar img{transform:rotate(360deg);-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);border-radius:30px !important;} #ds-reset .ds-avatar img:hover{transform:rotate(360deg);-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);border-radius:30px !important;} ``` ### 通用样式   源于网友分享。 ``` scss #ds-thread #ds-reset .ds-comment-body, #ds-thread #ds-reset ul.ds-children .ds-comment-body{padding-left:70px !important;} #ds-thread #ds-reset .ds-comment-body, #ds-thread #ds-reset ul.ds-children .ds-comment-body{padding-left:70px !important;} .ds-post:hover{background:#eee !important;} #ds-thread #ds-reset ul.ds-children .ds-avatar{width:50px !important;} #ds-thread #ds-reset .ds-replybox{padding: 0 0 0 80px !important;} #ds-reset #ds-ctx .ds-ctx-entry .ds-ctx-body{margin-left: 68px !important;} #ds-recent-comments li.ds-comment:nth-of-type(1){border:none !important;} #ds-thread{ border-radius: 3px; } /** 多说最近留言样式 **/ #ds-recent-comments .ds-avatar img{ width:54px;height:54px; border-radius: 50%; -webkit-border-radius: 50%; -moz-border-radius:50%; box-shadow: inset 0 -1px 0 #3333sf;/*设置图像阴影效果*/ -webkit-box-shadow: inset 0 -1px 0 #3333sf; -webkit-transition: 0.4s; -webkit-transition: -webkit-transform 0.4s ease-out; transition: transform 0.4s ease-out; -moz-transition: -moz-transform 0.4s ease-out; } #ds-recent-comments .ds-avatar img:hover{ box-shadow: 0 0 10px #fff; rgba(255,255,255,.6), inset 0 0 20px rgba(255,255,255,1); -webkit-box-shadow: 0 0 10px #fff; rgba(255,255,255,.6), inset 0 0 20px rgba(255,255,255,1); transform: rotateZ(360deg); -webkit-transform: rotateZ(360deg); -moz-transform: rotateZ(360deg); } ``` ### 喜欢按钮样式   透明度,背景,边框等样式调整。 ``` css .ds-meta { opacity: .5; } .ds-meta:hover { opacity: 1; } #ds-thread #ds-reset a.ds-like-thread-button { background-image: none; background-color: #fee2d3; border: none; text-shadow: none; font-family: inherit; } ``` ### 社交账号登陆透明度 ``` css #ds-thread #ds-reset .ds-login-buttons { opacity: .5; } #ds-thread #ds-reset .ds-login-buttons:hover { opacity: 1; } ``` ### 评论、文本框字体   默认字体偏小,稍作调整。 ``` css #ds-thread #ds-reset .ds-comment-body p, #ds-thread #ds-reset .ds-textarea-wrapper textarea { font-size: 1.15em; color: #717171; font-family: inherit; } ``` ### 用户名等超链接颜色 ``` css #ds-thread #ds-reset .ds-highlight { color: #ef7c6c !important; } ``` ### 未登录用户名字颜色   颜色与其他登陆用户保持一致; ``` css #ds-thread #ds-reset .ds-user-name { color: #ef7c6c !important; } ``` ### 评论框背景图片   选择合适大小的图片即可,带透明背景的更好。 ``` css #ds-thread #ds-reset .ds-textarea-wrapper textarea { background: url("/resources/Mihawk-s.png") bottom right no-repeat;} ``` ### 评论框背景 ``` css #ds-thread #ds-reset .ds-textarea-wrapper { background: rgba(255, 255, 255, .5); } ``` ### 工具栏背景 ``` css #ds-reset .ds-gradient-bg { background: rgba(255, 255, 255, .5); } ``` ### "发布"按钮背景   去掉背景图,修改底色,去掉文字阴影。 ``` css #ds-thread #ds-reset .ds-post-button { background-image: none; background: rgba(136, 172, 219, .2); text-shadow: none; } ``` ### 评论列表背景 ``` css #ds-thread #ds-reset li.ds-post { background: rgba(255, 255, 255, .2); } #ds-thread #ds-reset li.ds-post:hover { background-color: rgba(255, 255, 255, .6) !important; } ``` ### 评论数标签 ``` css #ds-thread #ds-reset li.ds-tab a.ds-current { background: rgba(255, 255, 255, .2); } ``` ## 多说账户设置   在多说网站后台做的一些个性化设置。`http://多说用户名.duoshuo.com/admin/settings` ### 评论显示方式   比较喜欢嵌套模式,最大层数设为3,评论每页最多30条。 ### 过滤机制   启用"Akismet智能过滤",等再过一阵子公开博客后大概能用上吧。 ### 默认头像   不大喜欢多说默认未登录访客的头像,修改为 [QQ 匿名头像](/resources/qq-avatar.png)。 ![默认头像][1] ## 参考资料 1. ***多说CSS修改*** by **多说团队** on 2012: 1. **Font Awesome**: 1. ***多说自定义CSS动感头像和多说评论显示User Agent的那些小事*** by **wsgzao** on 2015/04/23: 1. ***我的多说CSS样式分享*** by **赵小萌_Moe** on 2015/01/29: 1. ***多说评论框UA显示/博主标记*** by **赵小萌_Moe** on 2015/02/22: 1. ***多说评论框各种CSS自定义设置问题收集*** by **欲思** on 2014/04/22: