123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- <template>
- <div class="history">
- <h1>
- {{ timeList[activeTimeId] }}
- </h1>
- <menu>
- <img
- class="circle-no-light"
- src="@/assets/images/circle-no-light.png"
- alt=""
- draggable="false"
- >
- <img
- class="circle"
- src="@/assets/images/circle.png"
- alt=""
- draggable="false"
- >
- <ul>
- <li
- v-for="(time, idx) in timeList"
- :key="idx"
- :class="{active: activeTimeId === idx}"
- @click="activeTimeId = idx"
- >
- <div
- class="point"
- />
- {{ time }}
- </li>
- </ul>
- </menu>
- </div>
- </template>
- <script>
- import {
- ref,
- reactive,
- } from 'vue'
- export default {
- name: 'HistoryView',
- setup () {
- const timeList = reactive([
- '开埠通商',
- '曲折发展',
- '步履维艰',
- '筚路蓝缕',
- '改革开放',
- '战略负重',
- '创新驱动',
- '追梦未来',
- ])
- const activeTimeId = ref(0)
- return {
- timeList,
- activeTimeId,
- }
- }
- }
- </script>
- <style lang="less" scoped>
- .history {
- >h1 {
- position: absolute;
- top: 51px;
- left: 81px;
- max-width: 50%;
- overflow: hidden;
- white-space: pre;
- text-overflow: ellipsis;
- font-size: 48px;
- font-family: Source Han Sans CN-Heavy, Source Han Sans CN;
- font-weight: 800;
- color: #FFFFFF;
- padding-top: 20px;
- padding-bottom: 20px;
- border-top: 1px solid rgba(217, 217, 217, 0.2);
- border-bottom: 1px solid rgba(217, 217, 217, 0.2);
- }
- >menu {
- position: absolute;
- top: 214px;
- left: 0;
- >img.circle-no-light {
- position: absolute;
- top: -20%;
- left: -60px;
- height: 130%;
- pointer-events: none;
- }
- >img.circle {
- position: absolute;
- top: -20%;
- left: -60px;
- height: 130%;
- pointer-events: none;
- z-index: 1;
- }
- >ul {
- >li {
- display: flex;
- justify-content: flex-end;
- align-items: center;
- height: 50px;
- background: linear-gradient(270deg, #3A454F 0%, rgba(22,28,33,0) 100%);
- // border-radius: 3px;
- border: 1px solid;
- border-left: none;
- border-image: linear-gradient(270deg, rgba(78, 96, 112, 1), rgba(78, 96, 112, 0)) 1 1;
- margin-bottom: 15px;
- font-size: 20px;
- font-family: Source Han Sans CN-Regular, Source Han Sans CN;
- font-weight: 400;
- color: rgba(255, 255, 255, 0.5);
- // backdrop-filter: blur(5px); // 会导致产生层叠上下文!!!使得圆点无法在弧线上层!!!
- padding-right: 14px;
- cursor: pointer;
- position: relative;
- >.point {
- position: absolute;
- top: 50%;
- transform: translateY(-50%);
- width: 8px;
- height: 8px;
- border-radius: 4px;
- background: #D1DCE5;
- box-shadow: 0px 0px 12px 0px #6D9DC6, 0px 0px 8px 0px #6D9DC6;
- z-index: 2;
- }
- &:hover {
- background: linear-gradient(270deg, #B0A179 0%, rgba(255,209,91,0) 100%);
- border-image: linear-gradient(270deg, rgba(176, 161, 121, 1), rgba(176, 161, 121, 0)) 1 1;
- }
- &.active {
- font-size: 24px;
- font-family: Source Han Sans CN-Bold, Source Han Sans CN;
- font-weight: bold;
- color: #FFFFFF;
- text-shadow: 0px 0px 10px #8B7C54;
- >.point {
- background: #FFFFFF;
- box-shadow: 0px 0px 12px 0px #FFD15B, 0px 0px 8px 0px #FFD15B, 0px 0px 10px 0px #FFD15B, 0px 0px 5px 0px #FFD15B;
- }
- }
- &:nth-of-type(1) {
- width: calc(170px + 25px * 1);
- >.point {
- margin-right: calc(48px + 80px);
- }
- }
- &:nth-of-type(2) {
- width: calc(170px + 25px * 2);
- >.point {
- margin-right: calc(43px + 80px);
- }
- }
- &:nth-of-type(3) {
- width: calc(170px + 25px * 3);
- >.point {
- margin-right: calc(50px + 80px);
- }
- }
- &:nth-of-type(4) {
- width: calc(170px + 25px * 4);
- >.point {
- margin-right: calc(65px + 80px);
- }
- }
- &:nth-of-type(5) {
- width: calc(170px + 25px * 3);
- >.point {
- margin-right: calc(40px + 80px);
- }
- }
- &:nth-of-type(6) {
- width: calc(170px + 25px * 2);
- >.point {
- margin-right: calc(23px + 80px);
- }
- }
- &:nth-of-type(7) {
- width: calc(170px + 25px * 1);
- >.point {
- margin-right: calc(15px + 80px);
- }
- }
- &:nth-of-type(8) {
- width: 170px;
- >.point {
- margin-right: calc(17px + 80px);
- }
- }
- }
- }
- }
- }
- </style>
|