欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React?less?實現(xiàn)縱橫柱狀圖示例詳解

 更新時間:2022年09月19日 10:09:48   作者:鹿魚  
這篇文章主要介紹了React?less?實現(xiàn)縱橫柱狀圖示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

之前的文章,咱們介紹過橫向和豎向,具體的內(nèi)容,請看

這次,結(jié)合起來,橫向和豎向,一起畫

主要設(shè)計來源

三個部分

<ul className="vertical">
  <li className="vertical_li">100</li>
  <li className="vertical_li">75</li>
  <li className="vertical_li">50</li>
  <li className="vertical_li">25</li>
  <li className="vertical_li">0</li>
</ul>

display 布局

.vertical {
  height: 337px;
  font-size: 12px;
  font-weight: bold;
  color: #9eadca;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
<ul className="crosswise">
  <li>0</li>
  <li>25</li>
  <li>50</li>
  <li>75</li>
  <li>100</li>
</ul>

display 布局

.crosswise {
  width: 335px;
  font-size: 12px;
  font-weight: bold;
  color: #9eadca;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  margin-top: -31px;
  margin-left: -21px;
}
<div className="point_list">
  {list.map((item, index) => {
    return (
      <div
        className="point"
        style={{ top: `${100 - parseFloat(item.y)}%`, left: `${item.x}%` }}
        onMouseEnter={() => onMouseEnter(item, index)}
        onMouseLeave={() => onMouseLeave(index)}
        key={index}
      >
        {item.name}
      </div>
    )
  })}
</div>

動態(tài)位置使用絕對定位

.point_list {
  width: 308px;
  height: 308px;
  position: absolute;
  top: 0px;
  left: 0px;
}

具體的位置,是通過傳入的參數(shù)來進行控制的。如果傳入的參數(shù)不是具體的位置數(shù)值,前端也可以進行二次的計算。這里我就不演示了。之前的文章都有介紹,感興趣的小伙伴可以去前兩篇文章看一下。

style

ul,
li {
  list-style: none;
  padding: 0;
}
.parallel-comparison {
  height: 300px;
  padding-left: 35px;
  padding-top: 49px;
  padding-right: 29px;
  // height: 100%;
  .parallel_top {
    display: flex;
    height: 33px;
    align-items: center;
    .samll {
      display: inline-block;
      width: 4px;
      height: 24px;
      background-color: #085dff;
      border-radius: 3px;
    }
    .text {
      font-size: 24px;
      font-weight: 500;
      color: #085dff;
      line-height: 33px;
      margin-left: 8px;
      margin-right: 24px;
    }
    .history {
      padding: 5px 16px;
      background-color: #dce0e6;
      border-radius: 6px;
      color: #ffffff;
      font-size: 12px;
    }
  }
  .english {
    font-size: 18px;
    font-weight: 500;
    color: #ccd6e3;
  }
  .parallel_bottom {
    display: flex;
    margin-top: 48px;
    .left {
      height: 424px;
      box-shadow: 0px 0px 32px 0px rgba(0, 40, 96, 0.07);
      border-radius: 8px;
      padding-top: 15px;
      padding-left: 25px;
      h3 {
        font-size: 18px;
        font-weight: 400;
        color: #07132b;
      }
      .left_bottom {
        display: flex;
        width: 553px;
        .content {
          display: flex;
          flex-direction: column;
          .willingness {
            color: #9eadca;
            margin-left: 140px;
          }
          .gradual_change {
            display: flex;
            flex-direction: row;
            align-items: center;
            .box {
              width: 308px;
              height: 308px;
              background-color: #f2f6f6;
              margin-left: 27px;
              position: relative;
              .vertical {
                height: 337px;
                font-size: 12px;
                font-weight: bold;
                color: #9eadca;
                display: flex;
                flex-direction: column;
                margin-top: -8px;
                margin-left: -21px;
                justify-content: space-between;
              }
              .crosswise {
                width: 335px;
                font-size: 12px;
                font-weight: bold;
                color: #9eadca;
                display: flex;
                flex-direction: row;
                justify-content: space-between;
                margin-top: -31px;
                margin-left: -21px;
              }
              .point_list {
                width: 308px;
                height: 308px;
                position: absolute;
                top: 0px;
                left: 0px;
                .point {
                  position: absolute;
                  background-color: #ffffff;
                  text-align: center;
                  padding: 2px 5px;
                  font-size: 12px;
                  border-radius: 20px;
                  background: #e6eef4;
                  box-shadow: 20px 20px 60px #c4cacf, -20px -20px 60px #ffffff;
                }
              }
            }
            .good_value {
              display: inline-block;
              width: 15px;
              writing-mode: vertical-lr;
              color: #9eadca;
              font-size: 14px;
              margin-left: 12px;
              margin-right: 4px;
            }
          }
        }
      }
    }
  }
}

JS

import React, { useState, useEffect } from 'react';
import ReactDom from 'react-dom';
const ParallelComparison = ({ gradualChangeDataList }) => {
  const [list, setList] = useState(gradualChangeDataList)
  useEffect(() => {
    const _list = list
      .map((item) => {
        return {
          ...item,
          sum: parseFloat(item.x) + parseFloat(item.y),
          isHover: false
        }
      })
      .sort((a, b) => b.sum - a.sum)
  }, [gradualChangeDataList])
  return (
    <div className="parallel-comparison">
      <div className="parallel_bottom">
        <div className="left">
          <div className="left_bottom">
            <div className="content">
              <div className="gradual_change">
                <div className="box">
                  <ul className="vertical">
                    <li className="vertical_li">100</li>
                    <li className="vertical_li">75</li>
                    <li className="vertical_li">50</li>
                    <li className="vertical_li">25</li>
                    <li className="vertical_li">0</li>
                  </ul>
                  <ul className="crosswise">
                    <li>0</li>
                    <li>25</li>
                    <li>50</li>
                    <li>75</li>
                    <li>100</li>
                  </ul>
                  <div className="point_list">
                    {list.map((item, index) => {
                      return (
                        <div
                          className="point"
                          style={{ top: `${100 - parseFloat(item.y)}%`, left: `${item.x}%` }}
                          key={index}
                        >
                          {item.name}
                        </div>
                      )
                    })}
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  )
}
const Test = function () {
  const _arr = new Array()
for (let i = 0; i < 5; i++) {
  _arr.push({
    id: i,
    x: (Math.random() * 100).toFixed(2),
    y: (Math.random() * 100).toFixed(2),
    name: '碧螺春',
  })
}
  return (
    <ParallelComparison gradualChangeDataList={_arr} />
  );
};
ReactDom.render(<Test />, document.getElementById('app'));
      

以上就是React less 實現(xiàn)縱橫柱狀圖示例詳解的詳細內(nèi)容,更多關(guān)于React less縱橫柱狀圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • ReactNative錯誤采集原理在Android中實現(xiàn)詳解

    ReactNative錯誤采集原理在Android中實現(xiàn)詳解

    這篇文章主要為大家介紹了ReactNative錯誤采集原理在Android中實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • React學(xué)習(xí)筆記之條件渲染(一)

    React學(xué)習(xí)筆記之條件渲染(一)

    條件渲染在React里就和js里的條件語句一樣。下面這篇文章主要給大家介紹了關(guān)于React學(xué)習(xí)記錄之條件渲染的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • React Hooks之useRef獲取元素示例詳解

    React Hooks之useRef獲取元素示例詳解

    這篇文章主要介紹了React Hooks之useRef獲取元素示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • react中使用swiper的具體方法

    react中使用swiper的具體方法

    本篇文章主要介紹了react中使用swiper的具體方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • React-Native做一個文本輸入框組件的實現(xiàn)代碼

    React-Native做一個文本輸入框組件的實現(xiàn)代碼

    這篇文章主要介紹了React-Native做一個文本輸入框組件的實現(xiàn)代碼,非常具有實用價值,需要的朋友可以參考下
    2017-08-08
  • VSCode搭建React Native環(huán)境

    VSCode搭建React Native環(huán)境

    這篇文章主要介紹了VSCode搭建React Native環(huán)境,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • react 國際化的實現(xiàn)代碼示例

    react 國際化的實現(xiàn)代碼示例

    這篇文章主要介紹了react 國際化的實現(xiàn)代碼示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • React實現(xiàn)翻頁時鐘的代碼示例

    React實現(xiàn)翻頁時鐘的代碼示例

    本文給大家介紹了React實現(xiàn)翻頁時鐘的代碼示例,翻頁時鐘把數(shù)字分為上下兩部分,翻頁效果的實現(xiàn)需要通過設(shè)置 position 把所有的數(shù)組放在同一個位置疊加起來,文中有詳細的代碼講解,需要的朋友可以參考下
    2023-08-08
  • react-router-dom?v6?使用詳細示例

    react-router-dom?v6?使用詳細示例

    這篇文章主要介紹了react-router-dom?v6使用詳細示例,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2022-09-09
  • React?Native性能優(yōu)化指南及問題小結(jié)

    React?Native性能優(yōu)化指南及問題小結(jié)

    本文將介紹在React?Native開發(fā)中常見的性能優(yōu)化問題和解決方案,包括ScrollView內(nèi)無法滑動、熱更新導(dǎo)致的文件引用問題、高度獲取、強制橫屏UI適配、低版本RN適配iOS14、緩存清理、navigation參數(shù)取值等,感興趣的朋友一起看看吧
    2024-01-01

最新評論