parent
159bf2aed4
commit
9b5c25151f
@ -0,0 +1,5 @@ |
|||||||
|
.expansion{ |
||||||
|
display: inline-block; |
||||||
|
padding: 0 10rpx; |
||||||
|
color: #00d6ac; |
||||||
|
} |
@ -0,0 +1,90 @@ |
|||||||
|
import {View, Text} from '@tarojs/components'; |
||||||
|
import {ITouchEvent} from '@tarojs/components/types/common'; |
||||||
|
import Taro from "@tarojs/taro"; |
||||||
|
import {FC, useEffect, useState} from "react"; |
||||||
|
import styles from './collapse.module.scss' |
||||||
|
|
||||||
|
interface Props { |
||||||
|
text: string |
||||||
|
} |
||||||
|
|
||||||
|
const LineEllipsis:FC = ({text}:Props) => { |
||||||
|
const [disabled, setDisabled] = useState(false) |
||||||
|
const [isExpansioned, setIsExpansioned] = useState(false) |
||||||
|
const [overflow, setOverflow] = useState(false) |
||||||
|
|
||||||
|
useEffect(()=>{ |
||||||
|
init() |
||||||
|
},[text]) |
||||||
|
|
||||||
|
function init () { |
||||||
|
Taro.nextTick(() => { |
||||||
|
const query = Taro.createSelectorQuery() |
||||||
|
query.select('#Text').boundingClientRect() |
||||||
|
query.exec((res) => { |
||||||
|
console.log({res}) |
||||||
|
const height = res[0].height |
||||||
|
if(height <= 30) { |
||||||
|
setDisabled(true) |
||||||
|
}else{ |
||||||
|
setOverflow(true) |
||||||
|
} |
||||||
|
}) |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
function handleExpend (e?: ITouchEvent) { |
||||||
|
e && e.stopPropagation(); |
||||||
|
setOverflow(false) |
||||||
|
setIsExpansioned(true) |
||||||
|
} |
||||||
|
|
||||||
|
function handleHide (e?: ITouchEvent) { |
||||||
|
e && e.stopPropagation(); |
||||||
|
setOverflow(true) |
||||||
|
setIsExpansioned(false) |
||||||
|
}; |
||||||
|
|
||||||
|
function toggle () { |
||||||
|
if (disabled) return; |
||||||
|
if (isExpansioned) { |
||||||
|
handleHide(); |
||||||
|
} else { |
||||||
|
handleExpend(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return ( |
||||||
|
<View |
||||||
|
id="wrap" |
||||||
|
style={{ |
||||||
|
position: 'relative', |
||||||
|
color: '#999795', |
||||||
|
fontSize: '25rpx', |
||||||
|
overflow: overflow ? 'hidden' : 'unset', |
||||||
|
height: overflow ? '35rpx' : 'unset', |
||||||
|
lineHeight: overflow ? '35rpx' : '35rpx', |
||||||
|
marginTop:'24rpx', |
||||||
|
}}> |
||||||
|
<View id='Text' onClick={toggle}> |
||||||
|
{text} |
||||||
|
{!overflow && isExpansioned && ( |
||||||
|
<Text className={styles.expansion} onClick={handleHide}> |
||||||
|
收起 |
||||||
|
</Text> |
||||||
|
)} |
||||||
|
</View> |
||||||
|
{overflow && ( |
||||||
|
<Text |
||||||
|
className={styles.expansion} |
||||||
|
onClick={handleExpend} |
||||||
|
style={{position: 'absolute', top: '0', right: '0', background: '#fff'}}> |
||||||
|
...展开 |
||||||
|
</Text> |
||||||
|
)} |
||||||
|
</View> |
||||||
|
); |
||||||
|
// }
|
||||||
|
} |
||||||
|
|
||||||
|
export default LineEllipsis; |
@ -0,0 +1,4 @@ |
|||||||
|
export default definePageConfig({ |
||||||
|
navigationBarTitleText: '文章详情', |
||||||
|
onReachBottomDistance: 30 |
||||||
|
}) |
@ -0,0 +1,28 @@ |
|||||||
|
import {FC, useEffect, useState} from "react"; |
||||||
|
import {View} from "@tarojs/components"; |
||||||
|
import Taro, {useRouter} from "@tarojs/taro"; |
||||||
|
import {ArticleRecord, brandApi} from "@/api"; |
||||||
|
|
||||||
|
|
||||||
|
const article:FC = () => { |
||||||
|
const {id} = useRouter().params as unknown as { id: number} |
||||||
|
const [articleInfo,setArticleInfo] = useState<ArticleRecord>() |
||||||
|
useEffect(() => { |
||||||
|
getData() |
||||||
|
}, [id]) |
||||||
|
|
||||||
|
const getData = async () => { |
||||||
|
try { |
||||||
|
const data = await brandApi.articleInfo(id) |
||||||
|
Taro.setNavigationBarTitle({title:data.title}) |
||||||
|
setArticleInfo(data) |
||||||
|
} catch (e) { |
||||||
|
} |
||||||
|
} |
||||||
|
function helloWorld() { |
||||||
|
const html = articleInfo?.content; |
||||||
|
return <View dangerouslySetInnerHTML={{ __html: html! }}></View> |
||||||
|
} |
||||||
|
return helloWorld() |
||||||
|
} |
||||||
|
export default article |
@ -1,31 +1,65 @@ |
|||||||
|
.swiper{ |
||||||
|
width:750rpx; |
||||||
|
height:600rpx; |
||||||
|
background-color: pink; |
||||||
|
} |
||||||
|
.body{ |
||||||
|
border-radius: 32rpx 32rpx 0 0; |
||||||
|
background-color:cadetblue; |
||||||
|
width: 750rpx; |
||||||
|
box-sizing: border-box; |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
min-height: 80vh; |
||||||
|
position: absolute; |
||||||
|
top: 520rpx; |
||||||
|
.top{ |
||||||
|
padding:40rpx 30rpx 30rpx 30rpx; |
||||||
|
border-radius: 32rpx; |
||||||
|
background-color: #fff; |
||||||
|
.title{ |
||||||
|
font-size: 32rpx; |
||||||
|
font-weight: bold; |
||||||
|
color: #323635; |
||||||
|
line-height:44rpx; |
||||||
|
} |
||||||
|
} |
||||||
|
.bottom{ |
||||||
|
margin-top: 20rpx; |
||||||
|
flex:1; |
||||||
|
background-color: #fff; |
||||||
|
border-radius: 32rpx 32rpx 0 0; |
||||||
|
width: 100%; |
||||||
.box { |
.box { |
||||||
display: flex; |
display: flex; |
||||||
margin-bottom: 20rpx; |
|
||||||
background-color: #fff; |
background-color: #fff; |
||||||
border-radius: 16rpx; |
border-radius: 16rpx; |
||||||
padding: 24rpx; |
padding: 30rpx; |
||||||
box-sizing: border-box; |
box-sizing: border-box; |
||||||
} |
} |
||||||
|
.inner{ |
||||||
|
flex:1; |
||||||
|
display: flex; |
||||||
|
padding-bottom: 24rpx; |
||||||
|
border-bottom: 2rpx solid #F5F8F7; |
||||||
.image{ |
.image{ |
||||||
width: 128rpx; |
width: 172rpx; |
||||||
height:128rpx; |
height:128rpx; |
||||||
background-color: pink; |
background-color: pink; |
||||||
border-radius: 8rpx; |
border-radius: 8rpx; |
||||||
} |
} |
||||||
.rightBox{ |
.leftBox{ |
||||||
padding-left: 24rpx; |
padding-right: 24rpx; |
||||||
box-sizing: border-box; |
box-sizing: border-box; |
||||||
flex: 1; |
flex: 1; |
||||||
} |
} |
||||||
.desc{ |
.desc{ |
||||||
font-size: 24rpx; |
font-size: 22rpx; |
||||||
font-weight: 500; |
font-weight: 500; |
||||||
color: #909795; |
color: #909795; |
||||||
line-height: 34rpx; |
line-height: 32rpx |
||||||
display: -webkit-box; |
} |
||||||
text-overflow: ellipsis; |
|
||||||
overflow: hidden; |
|
||||||
-webkit-box-orient:vertical; |
|
||||||
-webkit-line-clamp:2; |
|
||||||
} |
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
Loading…
Reference in new issue