mirror of
https://github.com/palxiao/poster-design.git
synced 2025-07-03 03:56:41 +08:00
fix: scrollbar & lineGuides
This commit is contained in:
parent
abb2a034b5
commit
6fa5d35364
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,6 +2,7 @@
|
|||||||
node_modules
|
node_modules
|
||||||
/dist
|
/dist
|
||||||
config.json
|
config.json
|
||||||
|
/.vite
|
||||||
|
|
||||||
screenshot/node_modules/
|
screenshot/node_modules/
|
||||||
screenshot/dist/
|
screenshot/dist/
|
||||||
|
@ -26,9 +26,14 @@ body {
|
|||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-color: #e5e7eb;
|
border-color: #e5e7eb;
|
||||||
// font-size: 14px;
|
// font-size: 14px;
|
||||||
scrollbar-width: none; /* 火狐滚动条无法自定义宽度,只能通过此属性使滚动条宽度变细 */
|
// scrollbar-width: none; /* 火狐滚动条无法自定义宽度,只能通过此属性使滚动条宽度变细 */
|
||||||
-ms-overflow-style: none; /* 隐藏滚动条(在IE和Edge两个浏览器中很难更改样式,固采取隐藏方式) */
|
-ms-overflow-style: none; /* 隐藏滚动条(在IE和Edge两个浏览器中很难更改样式,固采取隐藏方式) */
|
||||||
}
|
}
|
||||||
|
@-moz-document url-prefix() {
|
||||||
|
* {
|
||||||
|
scrollbar-width: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
// html ::-webkit-scrollbar {
|
// html ::-webkit-scrollbar {
|
||||||
// display: none; /* Chrome Safari */
|
// display: none; /* Chrome Safari */
|
||||||
// }
|
// }
|
||||||
@ -40,12 +45,13 @@ body {
|
|||||||
}
|
}
|
||||||
&::-webkit-scrollbar-thumb {
|
&::-webkit-scrollbar-thumb {
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
background-color: #ccd4de;
|
background-color: #d9dcdf;
|
||||||
|
cursor: pointer;
|
||||||
// box-shadow: 0 0 1px hsl(0deg 0% 100% / 50%);
|
// box-shadow: 0 0 1px hsl(0deg 0% 100% / 50%);
|
||||||
}
|
}
|
||||||
&::-webkit-scrollbar-track {
|
&::-webkit-scrollbar-track {
|
||||||
background-color: #f0f1f3;
|
// background-color: #f0f1f3;
|
||||||
// background-color: transparent;
|
background-color: transparent;
|
||||||
// border-radius: 3px;
|
// border-radius: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,6 +135,7 @@ p {
|
|||||||
position: fixed;
|
position: fixed;
|
||||||
z-index: 99999;
|
z-index: 99999;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
opacity: .9;
|
||||||
}
|
}
|
||||||
.hide {
|
.hide {
|
||||||
opacity: 0 !important;
|
opacity: 0 !important;
|
||||||
|
@ -364,10 +364,13 @@ export default defineComponent({
|
|||||||
if (this.resizeTempData) {
|
if (this.resizeTempData) {
|
||||||
this.$store.commit('resize', this.resizeTempData)
|
this.$store.commit('resize', this.resizeTempData)
|
||||||
this.resizeTempData = null
|
this.resizeTempData = null
|
||||||
setTimeout(async () => {
|
// await this.$nextTick()
|
||||||
await this.$nextTick()
|
|
||||||
this.moveable.updateRect()
|
this.moveable.updateRect()
|
||||||
}, 10)
|
// 临时处理缩放后细线问题
|
||||||
|
this.$store.commit('setShowMoveable', false)
|
||||||
|
setTimeout(() => {
|
||||||
|
this.$store.commit('setShowMoveable', true)
|
||||||
|
}, 10);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
if (this.dActiveElement.type === 'w-text') {
|
if (this.dActiveElement.type === 'w-text') {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="page-design" ref="page_design" :style="{ paddingTop: dPaddingTop + 'px' }">
|
<div id="main">
|
||||||
<!-- <el-scrollbar> -->
|
<div id="page-design" ref="page_design" :style="{ paddingTop: dPaddingTop + 'px', minWidth: (dPage.width * dZoom) / 100 + 120 + 'px' }" >
|
||||||
<div
|
<div
|
||||||
id="out-page"
|
id="out-page"
|
||||||
class="out-page"
|
class="out-page"
|
||||||
@ -55,7 +55,7 @@
|
|||||||
<!-- <size-control v-if="dSelectWidgets.length === 0" /> -->
|
<!-- <size-control v-if="dSelectWidgets.length === 0" /> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- </el-scrollbar> -->
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -333,13 +333,17 @@ function getChilds(uuid: string) {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
|
#main {
|
||||||
|
overflow: auto; position: relative;
|
||||||
|
}
|
||||||
#page-design {
|
#page-design {
|
||||||
height: 100%;
|
scrollbar-width: none;
|
||||||
|
min-height: 100%;
|
||||||
// display: flex;
|
// display: flex;
|
||||||
// align-items: center;
|
// align-items: center;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
// width: 100%;
|
||||||
.out-page {
|
.out-page {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
padding: 60px;
|
padding: 60px;
|
||||||
|
@ -34,7 +34,7 @@ export const ZoomList: TZoomData[] = [
|
|||||||
value: 200,
|
value: 200,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: '最佳尺寸',
|
text: '适应屏幕',
|
||||||
value: -1,
|
value: -1,
|
||||||
// icon: 'icon-best-size',
|
// icon: 'icon-best-size',
|
||||||
},
|
},
|
||||||
|
@ -248,10 +248,9 @@ async function autoFixTop() {
|
|||||||
const presetPadding = 60
|
const presetPadding = 60
|
||||||
const el = document.getElementById('out-page')
|
const el = document.getElementById('out-page')
|
||||||
if (!el) return
|
if (!el) return
|
||||||
// const clientHeight = document.body.clientHeight - 54
|
const clientHeight = window.innerHeight - 54
|
||||||
|
// const parentHeight = (el.offsetParent as HTMLElement).offsetHeight - 54
|
||||||
const parentHeight = (el.offsetParent as HTMLElement).offsetHeight - 54
|
let padding = (clientHeight - el.offsetHeight) / 2
|
||||||
let padding = (parentHeight - el.offsetHeight) / 2
|
|
||||||
if (typeof curAction.value === 'undefined') {
|
if (typeof curAction.value === 'undefined') {
|
||||||
padding += presetPadding / 2
|
padding += presetPadding / 2
|
||||||
}
|
}
|
||||||
|
@ -78,23 +78,23 @@ function layerChange(newLayer: Record<string, any>[]) {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
@color0: #ffffff; // Appears 5 times
|
@color0: #ffffff;
|
||||||
@color1: #999999; // Appears 3 times
|
@color1: #999999;
|
||||||
@color2: #d7d7d7; // Appears 2 times
|
@background-color-transparent: rgba(0,0,0,.08);
|
||||||
|
|
||||||
#style-panel ::-webkit-scrollbar {
|
#style-panel ::-webkit-scrollbar {
|
||||||
display: none; /* Chrome Safari */
|
display: none; /* Chrome Safari */
|
||||||
}
|
}
|
||||||
#style-panel {
|
#style-panel {
|
||||||
background-color: @color0;
|
background-color: @color0;
|
||||||
border-left: 1px solid @color2;
|
border-left: 1px solid @background-color-transparent;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 280px;
|
width: 280px;
|
||||||
.style-tab {
|
.style-tab {
|
||||||
box-shadow: 0px 1px 5px 1px rgba(0, 0, 0, 0.1);
|
box-shadow: 0px 2px 0px 0px rgba(0, 0, 0, 0.1);
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@ -257,6 +257,11 @@ defineExpose({
|
|||||||
.infinite-list {
|
.infinite-list {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding-bottom: 150px;
|
padding-bottom: 150px;
|
||||||
|
scrollbar-width: none; /* Firefox */
|
||||||
|
-ms-overflow-style: none; /* IE 10+ */
|
||||||
|
}
|
||||||
|
.infinite-list::-webkit-scrollbar {
|
||||||
|
display: none; /* Chrome Safari */
|
||||||
}
|
}
|
||||||
.list {
|
.list {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
@ -209,6 +209,11 @@ export default defineComponent({
|
|||||||
.infinite-list {
|
.infinite-list {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding-bottom: 150px;
|
padding-bottom: 150px;
|
||||||
|
scrollbar-width: none; /* Firefox */
|
||||||
|
-ms-overflow-style: none; /* IE 10+ */
|
||||||
|
}
|
||||||
|
.infinite-list::-webkit-scrollbar {
|
||||||
|
display: none; /* Chrome Safari */
|
||||||
}
|
}
|
||||||
.list {
|
.list {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @Author: ShawnPhang
|
* @Author: ShawnPhang
|
||||||
* @Date: 2021-08-27 15:16:07
|
* @Date: 2021-08-27 15:16:07
|
||||||
* @Description: 模板列表
|
* @Description: 模板列表
|
||||||
* @LastEditors: ShawnPhang <https://m.palxp.cn>, Jeremy Yu <https://github.com/JeremyYu-cn>
|
* @LastEditors: ShawnPhang <https://m.palxp.cn>
|
||||||
* @Date: 2024-03-06 21:16:00
|
* @Date: 2024-03-06 21:16:00
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
@ -192,6 +192,11 @@ defineExpose({
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
padding-bottom: 150px;
|
padding-bottom: 150px;
|
||||||
|
scrollbar-width: none; /* Firefox */
|
||||||
|
-ms-overflow-style: none; /* IE 10+ */
|
||||||
|
}
|
||||||
|
.infinite-list::-webkit-scrollbar {
|
||||||
|
display: none; /* Chrome Safari */
|
||||||
}
|
}
|
||||||
// .list {
|
// .list {
|
||||||
// width: 100%;
|
// width: 100%;
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
}"
|
}"
|
||||||
draggable="true"
|
draggable="true"
|
||||||
@click="selectBasicText(item)"
|
@click="selectBasicText(item)"
|
||||||
@dragstart="dragStart($event, item)"
|
|
||||||
>
|
>
|
||||||
{{ item.text }}
|
{{ item.text }}
|
||||||
</div>
|
</div>
|
||||||
@ -25,7 +24,7 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
// const NAME = 'text-list-wrap'
|
// const NAME = 'text-list-wrap'
|
||||||
|
|
||||||
import wText from '../../widgets/wText/wText.vue'
|
import { wTextSetting } from '../../widgets/wText/wTextSetting'
|
||||||
|
|
||||||
import { useStore } from 'vuex'
|
import { useStore } from 'vuex'
|
||||||
|
|
||||||
@ -40,7 +39,7 @@ const store = useStore()
|
|||||||
|
|
||||||
const selectBasicText = (item: TBasicTextData) => {
|
const selectBasicText = (item: TBasicTextData) => {
|
||||||
store.commit('setShowMoveable', false) // 清理掉上一次的选择
|
store.commit('setShowMoveable', false) // 清理掉上一次的选择
|
||||||
let setting = JSON.parse(JSON.stringify(wText.setting))
|
let setting = JSON.parse(JSON.stringify(wTextSetting))
|
||||||
setting.text = '双击编辑文字' // item.text
|
setting.text = '双击编辑文字' // item.text
|
||||||
setting.width = item.fontSize * setting.text.length
|
setting.width = item.fontSize * setting.text.length
|
||||||
setting.fontSize = item.fontSize
|
setting.fontSize = item.fontSize
|
||||||
@ -49,13 +48,12 @@ const selectBasicText = (item: TBasicTextData) => {
|
|||||||
setting.left = pW / 2 - item.fontSize * 3
|
setting.left = pW / 2 - item.fontSize * 3
|
||||||
setting.top = pH / 2 - item.fontSize / 2
|
setting.top = pH / 2 - item.fontSize / 2
|
||||||
store.dispatch('addWidget', setting)
|
store.dispatch('addWidget', setting)
|
||||||
// addWidget(setting)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const dragStart = (_: MouseEvent, item: any) => {
|
// const dragStart = (_: MouseEvent, item: any) => {
|
||||||
store.commit('setDraging', true)
|
// store.commit('setDraging', true)
|
||||||
store.commit('selectItem', { data: { value: item }, type: 'text' })
|
// store.commit('selectItem', { data: { value: item }, type: 'text' })
|
||||||
}
|
// }
|
||||||
|
|
||||||
const basicTextList: TBasicTextData[] = [
|
const basicTextList: TBasicTextData[] = [
|
||||||
// {
|
// {
|
||||||
@ -86,7 +84,6 @@ const basicTextList: TBasicTextData[] = [
|
|||||||
]
|
]
|
||||||
defineExpose({
|
defineExpose({
|
||||||
selectBasicText,
|
selectBasicText,
|
||||||
dragStart,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// ...mapActions(['addWidget'])
|
// ...mapActions(['addWidget'])
|
||||||
@ -106,7 +103,7 @@ defineExpose({
|
|||||||
.basic-text-item {
|
.basic-text-item {
|
||||||
color: #33383e;
|
color: #33383e;
|
||||||
background-color: #f1f2f4;
|
background-color: #f1f2f4;
|
||||||
cursor: grab;
|
cursor: pointer;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
border-bottom: 1px solid rgba(255, 255, 255, 0);
|
border-bottom: 1px solid rgba(255, 255, 255, 0);
|
||||||
border-top: 1px solid rgba(255, 255, 255, 0);
|
border-top: 1px solid rgba(255, 255, 255, 0);
|
||||||
|
@ -27,7 +27,7 @@ export type TClassHeaderTypeData = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type TProps = {
|
type TProps = {
|
||||||
types: TClassHeaderTypeData[]
|
types?: TClassHeaderTypeData[]
|
||||||
isBack?: boolean
|
isBack?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,6 +56,11 @@ defineExpose({ select, back })
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
padding-bottom: 100px;
|
padding-bottom: 100px;
|
||||||
|
scrollbar-width: none; /* Firefox */
|
||||||
|
-ms-overflow-style: none; /* IE 10+ */
|
||||||
|
}
|
||||||
|
&__wrap::-webkit-scrollbar {
|
||||||
|
display: none; /* Chrome Safari */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.types {
|
.types {
|
||||||
|
@ -218,6 +218,11 @@ defineExpose({
|
|||||||
.img-list-wrap {
|
.img-list-wrap {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
scrollbar-width: none; /* Firefox */
|
||||||
|
-ms-overflow-style: none; /* IE 10+ */
|
||||||
|
}
|
||||||
|
.img-list-wrap::-webkit-scrollbar {
|
||||||
|
display: none; /* Chrome Safari */
|
||||||
}
|
}
|
||||||
.img {
|
.img {
|
||||||
transform-origin: center;
|
transform-origin: center;
|
||||||
|
@ -13,7 +13,7 @@ export default {
|
|||||||
// API_URL: isDev ? 'http://localhost:9998' : '${API}',
|
// API_URL: isDev ? 'http://localhost:9998' : '${API}',
|
||||||
API_URL: 'https://palxp.cn:8887', // 服务端地址
|
API_URL: 'https://palxp.cn:8887', // 服务端地址
|
||||||
SCREEN_URL: isDev ? 'http://localhost:7001' : '#{SCREEN_URL}', // 截图服务地址
|
SCREEN_URL: isDev ? 'http://localhost:7001' : '#{SCREEN_URL}', // 截图服务地址
|
||||||
IMG_URL: 'https://store.palxp.com/', // 七牛云资源地址
|
IMG_URL: 'https://store.palxp.cn/', // 七牛云资源地址
|
||||||
// ICONFONT_URL: '//at.alicdn.com/t/font_3223711_74mlzj4jdue.css',
|
// ICONFONT_URL: '//at.alicdn.com/t/font_3223711_74mlzj4jdue.css',
|
||||||
ICONFONT_URL: '//at.alicdn.com/t/font_2717063_ypy8vprc3b.css?display=swap',
|
ICONFONT_URL: '//at.alicdn.com/t/font_2717063_ypy8vprc3b.css?display=swap',
|
||||||
ICONFONT_EXTRA: '//at.alicdn.com/t/c/font_3228074_42xym3extur.css',
|
ICONFONT_EXTRA: '//at.alicdn.com/t/c/font_3228074_42xym3extur.css',
|
||||||
|
@ -337,8 +337,7 @@ export default {
|
|||||||
store.state.dSelectWidgets = []
|
store.state.dSelectWidgets = []
|
||||||
}, 10)
|
}, 10)
|
||||||
} else {
|
} else {
|
||||||
// TODO: 不清空会引起mask的bug,原因还不清楚..
|
// store.state.dActiveElement = {}
|
||||||
store.state.dActiveElement = {}
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
store.state.dActiveElement = widget
|
store.state.dActiveElement = widget
|
||||||
}, 10)
|
}, 10)
|
||||||
|
@ -186,8 +186,8 @@ function loadData() {
|
|||||||
if (!optionsRef.value) return
|
if (!optionsRef.value) return
|
||||||
optionsRef.value.load(id, tempid, tempType, async () => {
|
optionsRef.value.load(id, tempid, tempType, async () => {
|
||||||
if (!zoomControlRef.value) return
|
if (!zoomControlRef.value) return
|
||||||
zoomControlRef.value.screenChange()
|
// await nextTick()
|
||||||
await nextTick()
|
// zoomControlRef.value.screenChange()
|
||||||
// 初始化激活的控件为page
|
// 初始化激活的控件为page
|
||||||
store.dispatch('selectWidget', { uuid: '-1' })
|
store.dispatch('selectWidget', { uuid: '-1' })
|
||||||
// selectWidget({
|
// selectWidget({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user