浏览代码

ref(small-video): use css to set component visibility (#3039)

j8
virtuacoplenny 7 年前
父节点
当前提交
d4d5ef202a
没有帐户链接到提交者的电子邮件
共有 2 个文件被更改,包括 111 次插入25 次删除
  1. 90
    0
      css/_videolayout_default.scss
  2. 21
    25
      modules/UI/videolayout/SmallVideo.js

+ 90
- 0
css/_videolayout_default.scss 查看文件

@@ -649,3 +649,93 @@
649 649
                     1px 0px 1px rgba(0,0,0,0.3),
650 650
                     0px 0px 1px rgba(0,0,0,0.3);
651 651
 }
652
+
653
+.display-avatar-with-name {
654
+    .avatar-container {
655
+        visibility: visible;
656
+    }
657
+
658
+    .displayNameContainer {
659
+        visibility: visible;
660
+    }
661
+
662
+    .videocontainer__hoverOverlay {
663
+        visibility: visible;
664
+    }
665
+
666
+    video {
667
+        visibility: hidden;
668
+    }
669
+}
670
+
671
+.display-name-on-black {
672
+    .avatar-container {
673
+        visibility: hidden;
674
+    }
675
+
676
+    .displayNameContainer {
677
+        visibility: visible;
678
+    }
679
+
680
+    .videocontainer__hoverOverlay {
681
+        visibility: hidden;
682
+    }
683
+
684
+    video {
685
+        visibility: hidden;
686
+    }
687
+}
688
+
689
+.display-video {
690
+    .avatar-container {
691
+        visibility: hidden;
692
+    }
693
+
694
+    .displayNameContainer {
695
+        visibility: hidden;
696
+    }
697
+
698
+    .videocontainer__hoverOverlay {
699
+        visibility: hidden;
700
+    }
701
+
702
+    video {
703
+        visibility: visible;
704
+    }
705
+}
706
+
707
+.display-name-on-video {
708
+    .avatar-container {
709
+        visibility: hidden;
710
+    }
711
+
712
+    .displayNameContainer {
713
+        visibility: visible;
714
+    }
715
+
716
+    .videocontainer__hoverOverlay {
717
+        visibility: visible;
718
+    }
719
+
720
+    video {
721
+        visibility: visible;
722
+    }
723
+}
724
+
725
+.display-avatar-only {
726
+    .avatar-container {
727
+        visibility: visible;
728
+    }
729
+
730
+    .displayNameContainer {
731
+        visibility: hidden;
732
+    }
733
+
734
+    .videocontainer__hoverOverlay {
735
+        visibility: hidden;
736
+    }
737
+
738
+    video {
739
+        visibility: hidden;
740
+    }
741
+}

+ 21
- 25
modules/UI/videolayout/SmallVideo.js 查看文件

@@ -85,7 +85,6 @@ function SmallVideo(VideoLayout) {
85 85
     this.audioStream = null;
86 86
     this.VideoLayout = VideoLayout;
87 87
     this.videoIsHovered = false;
88
-    this.hideDisplayName = false;
89 88
 
90 89
     // we can stop updating the thumbnail
91 90
     this.disableUpdateView = false;
@@ -599,33 +598,30 @@ SmallVideo.prototype.updateView = function() {
599 598
         }
600 599
     }
601 600
 
601
+    this.$container.removeClass((index, classNames) =>
602
+        classNames.split(' ').filter(name => name.startsWith('display-')));
603
+
602 604
     // Determine whether video, avatar or blackness should be displayed
603 605
     const displayMode = this.selectDisplayMode();
604 606
 
605
-    // Show/hide video.
606
-
607
-    UIUtil.setVisibleBySelector(this.selectVideoElement(),
608
-                                displayMode === DISPLAY_VIDEO
609
-                                || displayMode === DISPLAY_VIDEO_WITH_NAME);
610
-
611
-    // Show/hide the avatar.
612
-    UIUtil.setVisibleBySelector(this.$avatar(),
613
-                                displayMode === DISPLAY_AVATAR
614
-                                || displayMode === DISPLAY_AVATAR_WITH_NAME);
615
-
616
-    // Show/hide the display name.
617
-    UIUtil.setVisibleBySelector(this.$displayName(),
618
-                                !this.hideDisplayName
619
-                                && (displayMode === DISPLAY_BLACKNESS_WITH_NAME
620
-                                || displayMode === DISPLAY_VIDEO_WITH_NAME
621
-                                || displayMode === DISPLAY_AVATAR_WITH_NAME));
622
-
623
-    // show hide overlay when there is a video or avatar under
624
-    // the display name
625
-    UIUtil.setVisibleBySelector(this.$container.find(
626
-                                '.videocontainer__hoverOverlay'),
627
-                                displayMode === DISPLAY_AVATAR_WITH_NAME
628
-                                || displayMode === DISPLAY_VIDEO_WITH_NAME);
607
+    switch (displayMode) {
608
+    case DISPLAY_AVATAR_WITH_NAME:
609
+        this.$container.addClass('display-avatar-with-name');
610
+        break;
611
+    case DISPLAY_BLACKNESS_WITH_NAME:
612
+        this.$container.addClass('display-name-on-black');
613
+        break;
614
+    case DISPLAY_VIDEO:
615
+        this.$container.addClass('display-video');
616
+        break;
617
+    case DISPLAY_VIDEO_WITH_NAME:
618
+        this.$container.addClass('display-name-on-video');
619
+        break;
620
+    case DISPLAY_AVATAR:
621
+    default:
622
+        this.$container.addClass('display-avatar-only');
623
+        break;
624
+    }
629 625
 };
630 626
 
631 627
 /**

正在加载...
取消
保存