个人MD风格博客系统(未完成)

简介:

历程:

从大上周周日开始写,写了也有块半个月了。本来代码就是打算用bootstrap怼怼的,结果MDUI这框架深得我心,写着写着越写越复杂,代码一次又一次的增删改查,重构,为了实现一个小功能去查阅更多的技术,一次又一次的读技术文档,查阅技术文档,API,学Jquery是因为我当初想去找一个类名为XXXXXX的元素,就是继承的关系,我用document.getElementClassName()这个东西实现起来很麻烦,写了一堆for循环,直到我发现了Jquery的层叠选择器。。。。。,然后照着Jquery文档用Jquery重构了一遍。。。。

  有一次我给侧边栏的那个导航添加超链接,用那个a标签,结果发现a标签有个外边距,于是在button里面写的onclick,后来发现这么多页面一个个加太麻烦了,我就用JQ加的click函数,重构了一遍。

  有一次我想在顶部导航栏加个按钮,就那个主页键,我是这么想的,就是手机端,我觉得手机端要是想要回到主页还得点那个侧边栏很麻烦,就想着在上边加个主页按钮,我一个一个加,我感觉有点蛮烦啊,然后看Vue.js居然可以直接用js写html,然后就用jq加的。。。。方便方便。。。

  后面又涉及到手机端适配的问题我在博客上学习了媒体查询,摄影那个界面我想加个边框,又不能写padding和margin,就学了css3弹性盒子。。。。。其实还有很多,主要是html5,css3和js、jq的API部分。。。

适配:

所有端实现响应式,包括手机端,平板端,PC,超大PC。

为了实现手机端和平板端的良好效果写了大量的媒体查询代码
尤其是手机端和IPAD端,浏览体验不比PC端差。

基于火狐和Chrome开发,开发用的Firefox调试。

由于API啥新用啥,所以
仅支持最新的Chrome、Firfox浏览器和任何基于Chrome内核或者Webkit内核的浏览器,以及IE10(可能连IE10也不支持)。
不支持老版本Chrome、Firfox以及IE9 IE8.

对手机端和平板端适配非常非常良好,包括横屏竖屏

如何使用:

请点击Welcome.html即可体验,另外IPAD和手机浏览效果更佳。
index.html是主页

前端:

框架选择:

  • Jquery
  • MDUI :类似Bootstrap的CSS框架,谷歌Material Design风格
    语法和Bootstrap也很相似

插件选择:

  • Viewer.js:图片查看插件
  • Share.js:时间原因功能未完美实现,有Bug)
  • shuffle.js:相册插件,忘记实现了。。。。

页面说明:

页面一共是分为以下10个页面,有1个页面没有实现,1个是模板

  • welcome.html:欢迎界面
  • index.html:主页
  • about.html:关于
  • article.html:文章列表
  • login.html: 登录页面
  • register.html:注册界面
  • photography.html:相册列表(另外说一声,那个图片是可以点击放大的)
  • video.html:视频列表页
  • blank.html:空白页(模板)
  • video_display_1.html:视频详情页(没有精力实现了)

文件夹说明:

css:
  • mdui.css :MDUI框架CSS文件
  • share.min.css:分享插件,没有实现
  • style.css:主要的css文件
  • viewer.mim.css:图片点击插件css文件
fonts:

MDUI默认字体文件

icons:

MDUI默认图标

images:
  • Photo:照片
  • 其他图片请看文件名
js:
  • jquery-3.4.0.min.js:Jquery主文件
  • mdui.js:mdui框架主js文件
  • main.js:主要的JS文件
  • main2.js:文章字体字数超出限制自动截断代码,article.html里面有引用
  • returnTop.js:右下角那个返回顶部按钮的js文件
  • shuffle.min.js:没有实现该功能
  • social-share.min.js:分享,没有实现,有Bug,在关于里面点分享可以看到对应的效果。
  • viewer.min.js:摄影那一栏的图片是可以点击的,点击之后可以放大缩小查看幻灯片等操作。
XXXXXX.html:各自的页面文件,请看上面的页面说明

功能介绍:

主要功能:

双击index.html或者welcome.html就是功能了,哈哈哈哈,我可真机智。

未完成功能:

分享功能,就是上面那个分享按钮,是没有办法复制到剪切板的,调用的分享插件显示有BUG也未有时间修复。

XX功能:这个靠脑子想,想出来一个就写一个,写到天荒地老,对了今天(2019-05-05)写那个欢迎界面的字,想用递归调,调了半天没出来。。。。,就索性用定时器写了。

还有n多页面没写。。。

已实现功能

主要有顶部导航(.mdui-appbar)、侧边导航(.mdui-drawer)和主内容(.mdui-container)三个部分组成

绝大部分功能依靠HTML实现,有时候嫌麻烦就用jq直接after或者append到DOM文档里面了,因此JS代码主要是添加一些重复量很大的HTML代码和一些重复量过多的功能,比如使用Jqobject.click(function(){windows.location.href:"XXX.html"})替换掉了a标签作为点击跳转链接的作用,有一些效果代码依靠JS实现,比如主题系统。

特色功能

特色功能:1.主题系统:

这个玩意就是顶部导航栏上的调色盘啊,切记要尝试一下啊,我代码写了一大堆啊,调试了半天BUG!

功能实现:

通过替换body中名为mdui-theme-primary-颜色 mdui-theme-accent-颜色的两个class类名(属性),以实现颜色切换的目的。

例子:

  把mdui-theme-primary-blue mdui-theme-accent-blue改为mdui-theme-primary-red mdui-theme-accent-red就可以实现整体的颜色的切换,为body添加mdui-theme-color为MDUI的主题颜色系统。

  
注:图片那个地方加了个蒙版,就是获取了mdui-theme-color-accent的颜色值之后给蒙版的background-color加了进去。然后封装函数,写到按钮的点击事件里了。

  • 颜色切换核心代码
//DOM
<ul class="mdui-menu mdui-menu-cascade mdui-menu-open" id="theme-bottom-id" style="top: 56px; left: 514px; transform-origin: 100% 0px 0px; position: absolute;"><li class="mdui-menu-item"><a href="javascript:;" class="mdui-ripple mdui-text-color-red"><i class="mdui-menu-item-icon mdui-icon material-icons">format_color_text</i>姨妈红</a></li><li class="mdui-menu-item"><a href="javascript:;" class="mdui-ripple mdui-text-color-pink"><i class="mdui-menu-item-icon mdui-icon material-icons">format_color_text</i>哔哩粉</a></li>
</ul>
//JS功能//调用绑定click事件
$("#theme-bottom-id li:nth-child(3)").click(function () {ChangThemeColor('red');
});//*类名替换函数//主题颜色更改函数
function ChangThemeColor(color){var class1 = "mdui-theme-primary-";var class2 = "mdui-theme-accent-";class1 = class1+color;class2 = class2+color;
// mdui-theme-primary-indigo mdui-theme-accent-indigovar allBodyClassName = $("body")[0].className;var className = allBodyClassName.toString();arrClassName = className.split(" ");var tempClass1;var tempClass2;for ( x in arrClassName){if (arrClassName[x].indexOf("mdui-theme-primary")){}else {tempClass1 = arrClassName[x];}if (arrClassName[x].indexOf("mdui-theme-accent")){}else {tempClass2 = arrClassName[x];}}$("body").removeClass(tempClass1);$("body").removeClass(tempClass2);$("body").addClass(class1);$("body").addClass(class2);setTimeout("changeMask()",100);
}

- 颜色切换核心代码:

    //DOM
<ul class="mdui-menu mdui-menu-cascade mdui-menu-open" id="theme-bottom-id" style="top: 56px; left: 514px; transform-origin: 100% 0px 0px; position: absolute;"><li class="mdui-menu-item" style="display: none" id="DaySwitch"><a href="javascript:;" class="mdui-ripple"><i class="mdui-menu-item-icon mdui-icon material-icons">brightness_high</i>日间模式</a></li><li class="mdui-menu-item" id="DarkSwitch"><a href="javascript:;" class="mdui-ripple"><i class="mdui-menu-item-icon mdui-icon material-icons">brightness_2</i>夜间模式</a></li>
</ul>//行为
$("#theme-bottom-id li:nth-child(1)").click(function () {$("body").removeClass("mdui-theme-layout-dark");$("#theme-bottom-id #DaySwitch").hide();document.getElementById("DarkSwitch").style.display="block";setTimeout("changeMask()",100);
});$("#theme-bottom-id li:nth-child(2)").click(function () {$("body").addClass("mdui-theme-layout-dark");$("#theme-bottom-id #DarkSwitch").hide();document.getElementById("DaySwitch").style.display="block";$(".color_card_mask").css("background-color","#000");
});//默认颜色// 默认颜色调用setTimeout("changeMask()",100);//设置整体的主题$("body").addClass("mdui-theme-primary-indigo mdui-theme-accent-indigo");

图片蒙版颜色切换代码

    //DOM
<div class="mdui-drawer" id="left-drawer"><ul class="mdui-list">    <div class="mdui-card"><div class="mdui-card-media"><div class="color_card_mask"></div><img src="image/MainSection.png"><div class="mdui-card-media-covered"><div class="mdui-card-primary"><div class="mdui-card-primary-title">流水吾情</div><div class="mdui-card-primary-subtitle">苦逼大一狗</div></div></div></div></div>....//行为
function changeMask() {//可以根据父类card标签的宽高自适应本身的宽度和高度,var imgWidth = $(".mdui-drawer .mdui-card").css("width");var imgHeight = $(".mdui-drawer .mdui-card").css("height");$(".color_card_mask").css("width",imgWidth);$(".color_card_mask").css("height",imgHeight);//更改颜色var themeColor = $(".mdui-color-theme-accent").css("background-color");$(".color_card_mask").css("background-color",themeColor);
}
    //CSS文件.color_card_mask{position: absolute;top: 0;left: 0;opacity: 0.3;}

特色功能:2.全局响应式

  • 由于框架自带响应式,所以必定支持响应式。
  • 但是自己对框架有的地方不满意,写了大量的媒体查询,对IPAD、手机、手机横屏进行了完美适配。

    代码端:

@media screen and (max-width: 600px){.index-card-photo-title .mdui-card-media{width: 100%;}.index-card-photo-title .mdui-card-primary .mdui-typo span{display: none;}.index-card-photo-title .mdui-card-primary .mdui-typo h1{width: 10rem;}
}
@media screen and (max-width: 1000px){.index-card-photo-title .mdui-card-primary{padding-left: 20px;padding-top: 0px;}
}

特色功能:3.浏览器判断

  • 由于使用了绝大多数最新的API,所以仅支持最新浏览器。所以写了以下代码进行了浏览器内核判断。

Code:

// 2、判断浏览器哦类型并处理
function userBrowser() {var browserName = navigator.userAgent.toLowerCase();if (/msie/i.test(browserName) && !/opera/.test(browserName)) {CreateIsBrowserHTML();alert("为了您的使用体验,请您使用最新的Chrome浏览器或Firefox(火狐)浏览器进行浏览。");return "ie";} else if (/firefox/i.test(browserName)) {return "firefox";} else if (/chrome/i.test(browserName) && /webkit/i.test(browserName) && /mozilla/i.test(browserName)) {return "chrome";} else if (/opera/i.test(browserName)) {CreateIsBrowserHTML();alert("为了您的使用体验,请您使用最新的Chrome浏览器或Firefox(火狐)浏览器进行浏览。");return "opera";} else if (/webkit/i.test(browserName) && !(/chrome/i.test(browserName) && /webkit/i.test(browserName) && /mozilla/i.test(browserName))) {return "webkit";} else {CreateIsBrowserHTML();alert("为了您的使用体验,请您使用最新的Chrome浏览器或Firefox(火狐)浏览器进行浏览。");return "unknown";}
}
userBrowser();

特色功能:4.视频页框架内嵌

  • 可以将别的视频网站的视频直接用iframe嵌入进来,实现在线视频。
    Code:
    // DOM<div class="mdui-card-media"><div class="video-load-img"><img src="image/video1_pic1.png" class="card-title-head-photo"/><button  id="video_button_play" class="mdui-fab mdui-ripple mdui-text-color-grey-500 video_button_play" ><i class="mdui-icon material-icons mdui-center mdui-valign">play_arrow</i></button><div class="mdui-video-container"><iframe src="//player.bilibili.com/player.html?aid=24493376&cid=41136449&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe></div></div>···    ```css// CSS
#video_button_play{position: absolute;right: 50%;top: 50%;width: 6rem;height: 6rem;margin-right: -3rem;margin-top: -3rem;
}
#video_button_play .mdui-icon{position: relative;font-size: 6rem;line-height: 5rem;text-align: center;width: 6rem;height: 6rem;margin-top: 0.5rem;opacity: 0.8;
}
    // Javascript
$("#video_button_play").click(function () {scrollPosition = $(document).scrollTop();$(".mdui-card-media .video-load-img .card-title-head-photo,#video_button_play").hide(0);$(".mdui-card-media .mdui-video-container").show(0);$(document).scrollTop(scrollPosition);$(".mdui-card-media .mdui-video-container iframe").attr('src', $('.mdui-card-media .mdui-video-container iframe').attr('src'));
});

后端:

根本没有精力写。。。。准备用node.js

Gitee:https://gitee.com/SpringWaterLikeMe/PrivateBlog

个人MD风格博客系统(未完成)相关推荐

  1. Solo 博客系统 1.7.0 发布 - 新版 MD 编辑器

    本次发布主要是更新了 Markdown 编辑器,加入了全屏.Emoji 自动完成.粘贴时自动转换为 MD 格式的特性.(1.7.0 版本变更记录请看这里) 目前的 Markdown 编辑器有多好用呢? ...

  2. 使用 ThinkJS + Vue.js 开发博客系统

    编者注:ThinkJS 作为一款 Node.js 高性能企业级 Web 框架,收到了越来越多的用户的喜爱.今天我们请来了 ThinkJS 用户 @lscho 同学为我们分享他基于 ThinkJS 开发 ...

  3. 免费打造个人博客系统

    自媒体越来越受重视,写作能力也变得更加重要,但万事开头难,第一步:构建一个人文章发布平台,都难道不少人,今天介绍一种免费搭建个人博客系统的方法,不仅能成为自己写作平台,还可以将文章轻松发布到其他公共平 ...

  4. 使用Pelican搭建博客系统

    摘要 经过几天的折腾,用Pelican搭建的独立博客系统终于上线运行了.可以打开kamidox.com看一下效果图.由于选用了响应式网页设计的主题,所以在手机上的浏览效果也相当赞.本文介绍了Pelic ...

  5. 星聚宝分享几款优秀的开源博客系统

    搭个博客不难,而写博客这事,一开始可能想半天依然不知道写点什么,我的建议是,一开始在博客上简单总结一些当下正在学习的笔记,也可以记录一些自己在学习或者工作中遇到的一些问题,然后再慢慢转向个人输出. 有 ...

  6. 福来惠源分享几款优秀的开源博客系统

    搭个博客不难,而写博客这事,一开始可能想半天依然不知道写点什么,我的建议是,一开始在博客上简单总结一些当下正在学习的笔记,也可以记录一些自己在学习或者工作中遇到的一些问题,然后再慢慢转向个人输出. 有 ...

  7. 最详细的个人博客教程搭建教程,最快5分钟快速搭建简约风格博客

    文章每周持续更新,各位的「三连」是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 傻瓜式一站式教你用github pages 来搭建博客,详细记录全过程 ...

  8. 多人开源博客系统再搜集

    Posted on October 22, 2006 by kunstao 现在很多人在找多用户blog,我列出的大部分都说自己支持多用户,但实际上多用户有两种,一种是多人共同维护一个blog,另一种 ...

  9. python搭建博客系统_用Pelican快速搭建极简静态博客系统

    我一直建议每个开发者都要有写博客记笔记的习惯,一来可以沉淀知识,二来可以帮助别人,我使用过很多博客平台,也用Python开发过博客系统,就这么个东西折腾好几年,一直找不到理想的产品,直到我用Pelic ...

  10. R语言搭建炫酷的线上博客系统

    本文转载自R语言中文社区,转载已获授权. 作者简介Introduction 徐静 硕士研究生.算法工程师 兴趣方向:统计机器学习,深度学习,模型的线上化部署.网络爬虫,前端可视化. 个人博客:http ...

最新文章

  1. SpringBoot (四) :SpringBoot整合使用JdbcTemplate
  2. Android log 管理工具
  3. [内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析
  4. 我用大屏模板做年中可视化报告,惊艳了在场的同事和领导
  5. 人工智能学习书单推荐
  6. Codeforces Round #380~#400 div2 总结 - updating
  7. python实现一对一聊天_vue+django实现一对一聊天功能
  8. “云手机”是否会成为未来的主流?
  9. 如何使用SQL Server Reporting Services将数据格式转换为有价值的数据集
  10. 霸气!Power 支持混合云、多云,性能完胜 x86!
  11. Linux下Oracle新建一个数据库、启动多实例数据库
  12. 数据库知识整理 - 概述、数据模型、三级模式结构
  13. 威廉玛丽学院计算机教授刘旭,国家超级计算济南中心,欢迎您!
  14. oracle查询超过一千行报错,Oracle数据库查询用 where in 查询的项超过1000条的解决方案...
  15. python 清华教程_清华推出 1564集Java Python视频教程,别再说找不到适合的教程了...
  16. 有了这25个正则表达式,代码效率提高80%
  17. SSH tunnel 隧道技术
  18. 省市县数十万数据集PM2.5面板数据(1998-2020年)
  19. 汗,Ackerman函数......
  20. 深圳软件测试培训:Jmeter目录构成

热门文章

  1. jq万年历,仿百度日历
  2. Flutter 画笔(Paint)、绘制直线(drawLine)
  3. linux ac97声卡驱动下载,《声卡驱动》AC97声卡/创新/主板集成
  4. Linux ALSA声卡驱动之二:声卡的创建
  5. setup factory 会话变量
  6. 最全整理浏览器兼容性问题与解决方案
  7. 盘点2017年科技事件 马云最娱乐雷军最傲娇
  8. 牛市来了,我劝读者不要炒股他却骂我不地道...
  9. 计算机键盘灯光怎么关闭,电脑关了键盘灯一直亮着怎么办
  10. cad2014卡顿的解决方法_cad卡顿解决办法(cad卡顿怎么解决)