调整markdown显示界面
This commit is contained in:
parent
4a08337bbc
commit
2eae339af2
142
src/components/backtop/AlBackTop.vue
Normal file
142
src/components/backtop/AlBackTop.vue
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
<template>
|
||||||
|
<transition name="el-fade-in">
|
||||||
|
<div
|
||||||
|
v-if="visible"
|
||||||
|
@click.stop="handleClick"
|
||||||
|
:style="{
|
||||||
|
'right': styleRight,
|
||||||
|
'bottom': styleBottom
|
||||||
|
}"
|
||||||
|
class="el-backtop">
|
||||||
|
<slot>
|
||||||
|
<el-icon name="caret-top"></el-icon>
|
||||||
|
</slot>
|
||||||
|
</div>
|
||||||
|
</transition>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import Cookies from 'js-cookie'
|
||||||
|
import throttle from 'throttle-debounce/throttle';
|
||||||
|
|
||||||
|
const cubic = value => Math.pow(value, 3);
|
||||||
|
const easeInOutCubic = value => value < 0.5
|
||||||
|
? cubic(value * 2) / 2
|
||||||
|
: 1 - cubic((1 - value) * 2) / 2;
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'AlBackTop',
|
||||||
|
|
||||||
|
props: {
|
||||||
|
visibilityHeight: {
|
||||||
|
type: Number,
|
||||||
|
default: 200
|
||||||
|
},
|
||||||
|
target: [String],
|
||||||
|
right: {
|
||||||
|
type: Number,
|
||||||
|
default: 40
|
||||||
|
},
|
||||||
|
bottom: {
|
||||||
|
type: Number,
|
||||||
|
default: 40
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
el: null,
|
||||||
|
container: null,
|
||||||
|
visible: false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
styleBottom() {
|
||||||
|
return `${this.bottom}px`;
|
||||||
|
},
|
||||||
|
styleRight() {
|
||||||
|
return `${this.right}px`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.init();
|
||||||
|
this.throttledScrollHandler = throttle(300, this.onScroll);
|
||||||
|
this.container.addEventListener('scroll', this.throttledScrollHandler);
|
||||||
|
|
||||||
|
window.onbeforeunload = function () {
|
||||||
|
var scrollPos;
|
||||||
|
if (typeof window.pageYOffset != 'undefined') {
|
||||||
|
scrollPos = window.pageYOffset;
|
||||||
|
}
|
||||||
|
else if (typeof document.compatMode != 'undefined' && document.compatMode !== 'BackCompat') {
|
||||||
|
scrollPos = document.documentElement.scrollTop;
|
||||||
|
}
|
||||||
|
else if (typeof document.body != 'undefined') {
|
||||||
|
scrollPos = document.body.scrollTop;
|
||||||
|
}
|
||||||
|
document.cookie = "scrollTop=" + scrollPos; //存储滚动条位置到cookies中
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
init() {
|
||||||
|
this.container = document;
|
||||||
|
this.el = document.documentElement;
|
||||||
|
if (this.target) {
|
||||||
|
this.el = document.querySelector(this.target);
|
||||||
|
if (!this.el) {
|
||||||
|
throw new Error(`target is not existed: ${this.target}`);
|
||||||
|
}
|
||||||
|
this.container = this.el;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getScroll(el){
|
||||||
|
return window.pageYOffset || el.scrollTop || document.body.scrollTop || 0
|
||||||
|
},
|
||||||
|
onScroll() {
|
||||||
|
const scrollTop = this.getScroll(this.el);
|
||||||
|
console.log(scrollTop)
|
||||||
|
this.visible = scrollTop >= this.visibilityHeight;
|
||||||
|
},
|
||||||
|
handleClick(e) {
|
||||||
|
this.scrollToTop();
|
||||||
|
this.$emit('click', e);
|
||||||
|
},
|
||||||
|
scrollToTop() {
|
||||||
|
const el = this.el;
|
||||||
|
const beginTime = Date.now();
|
||||||
|
const beginValue = this.getScroll(el);
|
||||||
|
const rAF = window.requestAnimationFrame || (func => setTimeout(func, 16));
|
||||||
|
const frameFunc = () => {
|
||||||
|
const progress = (Date.now() - beginTime) / 500;
|
||||||
|
if (progress < 1) {
|
||||||
|
if(el.scrollTop !== 0){
|
||||||
|
el.scrollTop = beginValue * (1 - easeInOutCubic(progress));
|
||||||
|
}else if(window.pageYOffset !== 0){
|
||||||
|
window.pageYOffset = beginValue * (1 - easeInOutCubic(progress));
|
||||||
|
}else{
|
||||||
|
document.body.scrollTop = beginValue * (1 - easeInOutCubic(progress));
|
||||||
|
}
|
||||||
|
rAF(frameFunc);
|
||||||
|
} else {
|
||||||
|
if(el.scrollTop !== 0){
|
||||||
|
el.scrollTop = 0;
|
||||||
|
}else if(window.pageYOffset !== 0){
|
||||||
|
window.pageYOffset = 0;
|
||||||
|
}else{
|
||||||
|
document.body.scrollTop = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
rAF(frameFunc);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
beforeDestroy() {
|
||||||
|
this.container.removeEventListener('scroll', this.throttledScrollHandler);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@ -50,20 +50,15 @@ export default {
|
|||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
if(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {
|
if(/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent)) {
|
||||||
this.isShow = false
|
|
||||||
window.pc = false
|
window.pc = false
|
||||||
} else {
|
} else {
|
||||||
this.isShow = true
|
|
||||||
window.pc = true
|
window.pc = true
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(getToken())
|
|
||||||
if(getToken()){
|
if(getToken()){
|
||||||
this.isShow = true
|
this.isShow = window.pc;
|
||||||
window.pc = true
|
|
||||||
}else{
|
}else{
|
||||||
this.isShow = false
|
this.isShow = false
|
||||||
window.pc = false
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|||||||
@ -1,41 +1,50 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<mavon-editor
|
<al-back-top></al-back-top>
|
||||||
v-if="!showList"
|
<div class="content">
|
||||||
v-model="content"
|
|
||||||
:subfield="false"
|
|
||||||
:boxShadow="false"
|
|
||||||
defaultOpen="preview"
|
|
||||||
:navigation="toolbarsFlag"
|
|
||||||
:toolbarsFlag="toolbarsFlag"
|
|
||||||
:toolbars="toolbars"
|
|
||||||
@navigationToggle="navigationToggle"
|
|
||||||
/>
|
|
||||||
|
|
||||||
Scroll down to see the bottom-right button.
|
<el-row :gutter="0">
|
||||||
<el-backtop target=".page-component__scroll .el-scrollbar__wrap" :bottom="100">
|
<el-col :xs="0" :sm="1" :md="3" :lg="5" :xl="6"><div>{{leftContent}}d</div></el-col>
|
||||||
<div
|
<el-col :xs="24" :sm="22" :md="18" :lg="14" :xl="12">
|
||||||
style="{
|
<mavon-editor
|
||||||
height: 100%;
|
v-if="!showList"
|
||||||
width: 100%;
|
v-model="content"
|
||||||
background-color: #f2f5f6;
|
:subfield="false"
|
||||||
box-shadow: 0 0 6px rgba(0,0,0, .12);
|
:boxShadow="false"
|
||||||
text-align: center;
|
defaultOpen="preview"
|
||||||
line-height: 40px;
|
:navigation="toolbarsFlag"
|
||||||
color: #1989fa;
|
:toolbarsFlag="toolbarsFlag"
|
||||||
}"
|
:toolbars="toolbars"
|
||||||
>
|
@navigationToggle="navigationToggle"
|
||||||
UP
|
/>
|
||||||
</div>
|
</el-col>
|
||||||
</el-backtop>
|
<el-col :xs="0" :sm="1" :md="3" :lg="5" :xl="6"></el-col>
|
||||||
|
</el-row>
|
||||||
|
<!--{{content}}-->
|
||||||
|
<!--<mavon-editor-->
|
||||||
|
<!--v-if="!showList"-->
|
||||||
|
<!--v-model="content"-->
|
||||||
|
<!--:subfield="false"-->
|
||||||
|
<!--:boxShadow="false"-->
|
||||||
|
<!--defaultOpen="preview"-->
|
||||||
|
<!--:navigation="toolbarsFlag"-->
|
||||||
|
<!--:toolbarsFlag="toolbarsFlag"-->
|
||||||
|
<!--:toolbars="toolbars"-->
|
||||||
|
<!--@navigationToggle="navigationToggle"-->
|
||||||
|
<!--/>-->
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import AlBackTop from "@/components/backtop/AlBackTop";
|
||||||
import markdownApi from '@/api/markdown-api'
|
import markdownApi from '@/api/markdown-api'
|
||||||
export default {
|
export default {
|
||||||
|
components: { AlBackTop },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
leftContent: '',
|
||||||
|
backTopTarget: ".content",
|
||||||
showList: true,
|
showList: true,
|
||||||
toolbars:{
|
toolbars:{
|
||||||
navigation: true,
|
navigation: true,
|
||||||
@ -52,12 +61,31 @@
|
|||||||
this.getMarkDown()
|
this.getMarkDown()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
onScroll() {
|
||||||
|
// console.log(document.documentElement.scrollTop)
|
||||||
|
},
|
||||||
getMarkDown() {
|
getMarkDown() {
|
||||||
markdownApi.getMarkdown({
|
markdownApi.getMarkdown({
|
||||||
mark: this.$route.query.mark
|
mark: this.$route.query.mark
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
this.content = res.data.contentText
|
this.content = res.data.contentText
|
||||||
console.log(res.data)
|
const _this = this
|
||||||
|
setTimeout(function () {
|
||||||
|
_this.backTopTarget = ".v-note-wrapper .markdown-body"
|
||||||
|
|
||||||
|
if (document.cookie.match(/scrollTop=([^;]+)(;|$)/) != null) {
|
||||||
|
var arr = document.cookie.match(/scrollTop=([^;]+)(;|$)/); //cookies中不为空,则读取滚动条位置
|
||||||
|
console.log('arr',arr)
|
||||||
|
document.documentElement.scrollTop = parseInt(arr[1]);
|
||||||
|
document.body.scrollTop = parseInt(arr[1]);
|
||||||
|
}
|
||||||
|
},10)
|
||||||
|
|
||||||
|
const doc = document;
|
||||||
|
// const doc = document.querySelector(".v-show-content");
|
||||||
|
console.log(doc)
|
||||||
|
doc.addEventListener("scroll", _this.onScroll);
|
||||||
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
navigationToggle(d){
|
navigationToggle(d){
|
||||||
@ -66,3 +94,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
/deep/ .v-note-wrapper {
|
||||||
|
position: unset;
|
||||||
|
}
|
||||||
|
.content {
|
||||||
|
/*font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB",*/
|
||||||
|
/*"Microsoft YaHei", "微软雅黑", Arial, sans-serif;*/
|
||||||
|
/*-webkit-font-smoothing: antialiased;*/
|
||||||
|
/*-moz-osx-font-smoothing: grayscale;*/
|
||||||
|
/*width: 100%;*/
|
||||||
|
/*height: 100%;*/
|
||||||
|
/*overflow-y: scroll;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user