• vue实现全屏screenfull-封装组件


    1. 安装依赖

    npm install --save screenfull

    2. 引用

    import screenfull from "screenfull"

    3.封装fullScreen/index:

    1. <script>
    2. import screenfull from 'screenfull'
    3. export default {
    4. props: {
    5. element: {
    6. type: String,
    7. default: 'html'
    8. },
    9. openTips: {
    10. type: String,
    11. default: 'Fullscreen'
    12. },
    13. exitTips: {
    14. type: String,
    15. default: 'Exit Fullscreen'
    16. },
    17. content: {
    18. type: Boolean,
    19. default: false
    20. }
    21. },
    22. data() {
    23. return {
    24. isFullscreen: false
    25. };
    26. },
    27. computed: {
    28. fullscreenTips() {
    29. return this.isFullscreen ? this.exitTips : this.openTips;
    30. },
    31. },
    32. methods: {
    33. handleFullscreenClick() {
    34. const dom = document.querySelector(this.element) || undefined;
    35. if (screenfull.enabled) {
    36. screenfull.toggle(dom);
    37. this.isFullscreen = screenfull.isFullscreen;
    38. }
    39. },
    40. handleFullscreenChange() {
    41. this.isFullscreen = screenfull.isFullscreen;
    42. // Clear all classes when exiting fullscreen
    43. if (!this.isFullscreen) {
    44. document.body.className = '';
    45. }
    46. },
    47. handleKeyDown(event) {
    48. // 检查是否按下了 ESC 键
    49. if (event.key === 'Escape' && screenfull.isFullscreen) {
    50. this.$message.warning('按 ESC 键可以退出全屏模式');
    51. }
    52. }
    53. },
    54. mounted() {
    55. if (screenfull.enabled) {
    56. screenfull.on('change', this.handleFullscreenChange);
    57. document.addEventListener('keydown', this.handleKeyDown);
    58. }
    59. },
    60. beforeDestroy() {
    61. if (screenfull.enabled) {
    62. screenfull.off('change', this.handleFullscreenChange);
    63. document.removeEventListener('keydown', this.handleKeyDown);
    64. }
    65. }
    66. };
    67. script>

    4.vue页面使用