Using CSS and Javascript for customization

Last updated: August 28, 2025

Intro

Here you can find the most common HTML/CSS/JS customizations and snippets to use in your Videosync events.

Modifying only the appearance (CSS)

📌

What is CSS class or id?

A class is used in HTML like this: <div class="container">content</div>

In CSS, this class can be referred like this to change its font color, for example: .container { color: red; }

ID is basically the same, but with different syntax: <div id="container-id">content</div>

In CSS: #container { color: red; }

So in CSS, class uses dot (.) and id uses hashtag (#).

Access CSS editor in Videosync Admin: AdvancedAdvanced SettingsCSS editor

How do I hide or show an element?

You can hide and show different elements by removing or adding display: none; in the CSS editor for the corresponding element id. You have to find out the name of the required element using the browser’s inspector or from the list below.

To show:

  1. Go to AdvancedAdvanced settingsCSS editor
  2. (Ctrl+f) search for the right element, e.g. chat messages #chatboard-comments { display: none; }
  3. Remove display: none;

To hide:

  1. Go to AdvancedAdvanced settingsCSS editor
  2. Add the following code #chatboard-comments { display: none; }

Element names

/* Names of the most common main elements in event page */

#vs-header {
  /* Top bar with the event title */
}

#vs-about-below-video {
  /* About section directly below video player */
}

#vs-about-section {
  /* Normal about section */
}

#vs-registration {
  /* Registration form area */
}

#vs-presentation {
  /* General video player & slide (& chat next to video) area*/
}

#vs-reactions {
  /* Emoji reactions below video player */
}

#vs-thumbnails {
  /* Slide thumbnails carousel below video & slide */
}

#vs-attachments {
  /* Attachments list */
}

#vs-hidden {
  /* Hidden state placeholder for the player/slide area. Usually contains text "Live is paused" etc.
  Applies to pre-live, paused and hidden-od states. */
}

#vs-messageboard {
  /* Chat / Messageboard either next to video player or below it as an own section */
}

#vs-links {
  /* Link grid */
}

#vs-chapters {
  /* Chapters list */
}

#vs-chapter-select {
  /* Chapter select dropdown in on-demands */
}

#vs-footer {
  /* Main footer */
}

#vs-videosync-footer {
  /* Videosync's own small footer on the bottom with terms, privacy policy, copyright notice */
}

#vs-users-list {
  /* Participants list as a section on the page */
}

/* Notify the dev team (support@videosync.fi) if something should be added to this list */

I can’t find an element, for example “Speakers list” anywhere on the admin page. Where is it and how can I edit it?

It is most likely custom made HTML structure in the about section. Check it out and look for HTML tags containing the information you’re looking for:

<tags class="custom">INFO: Speaker Name</tags>

Now, it’s easy to change the necessary information to what you want, e.g. Speaker Name → Another Alias without touching the HTML code.

The styles related to this element can also be found by searching the .custom class name within the AdvancedAdvanced settingsCSS editor:

.custom {
  color: red;
}

How can I use a Google font

Add the following code to CSS editor:

/* Inter as an example */
@import url("https://fonts.googleapis.com/css2?family=Inter&display=swap");

body {
  font-family: "Inter", sans-serif;
}

Changing the order of page elements

/* Add this to make the "order" rules work */
.vs-mainwrapper {
  display: flex;
  flex-direction: column;
}

/* Add the rule "order: " to all necessary elements followed by the
respective number in which order you want them to be */
#vs-header {
  order: 0;
}

#vs-about-section {
  order: 2;
}

#vs-presentation {
  order: 1;
}

Full width background image for the hidden text

Good size for a background image is 1980x1080

/* Hidden as an example */
#vs-hidden {
  background-size: cover;
}

Adding new elements (HTML+CSS+JS)

📌

How to add different snippets to your Videosync event site?

  1. HTML can be added in their respective text fields (e.g. Event site setupEvent description areaContent)
  2. CSS code can be added in AdvancedAdvanced SettingsCSS editor
  3. JavaScript code can be added in AdvancedAdvanced SettingsEmbed own JavaScript. Always include <script> CODE </script> tags around the JS code.

Countdown to hidden state

HTML:

<div class="welcome-text-hidden">
  <h3>Tervetuloa!</h3>
  <div>
    Lähetys alkaa automaattisesti tällä sivulla <span id="date-span"></span>.
    Tapahtuman alkuun:
  </div>
</div>
<div class="hidden-text-container">
  <div class="countdown-container">
    <div><span id="days"></span><span class="count-span">Päivää</span></div>
    <div><span id="hours"></span><span class="count-span">Tuntia</span></div>
    <div>
      <span id="minutes"></span><span class="count-span">Minuuttia</span>
    </div>
    <div>
      <span id="seconds"></span><span class="count-span">Sekunttia</span>
    </div>
  </div>
</div>

CSS:

/* COUNTDOWN */

.welcome-text-hidden {
  display: flex;
  flex-direction: column;
  justify-content: center;
  opacity: 0.9;
}

.welcome-text-hidden h3 {
  margin: 0;
  font-size: 24px;
}

.welcome-text-hidden div {
  width: 300px;
  font-size: 16px;
  margin: 33px 12px 12px 0;
  line-height: 140%;
}

.countdown-container {
  flex-wrap: wrap;
  display: flex;
}

.countdown-container div {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: #0a121f;
  min-width: 100px;
  min-height: 108px;
  margin: 12px 12px 12px 0;
  opacity: 0.9;
  border-radius: 10px;
}

.count-span {
  line-height: 1;
  margin-top: 14px;
  font-size: 14px;
}

#days,
#hours,
#minutes,
#seconds {
  font-weight: 700;
  font-size: 40px;
}

JavaScript:

<script>
/* COUNTDOWN */

var url = window.location.pathname;

function addCountDown(e) {
  var videoEl = document.getElementById("bitmovin-player");
  var regEl = document.querySelector("#vs-registration");
  var regElContainer = document.querySelector(
    "#vs-registration .content.content-center"
  );
  var hiddenContainer = document.querySelector("#days");
  var registerForm = document.querySelector(
    "#vs-registration .content.content-center .register-form"
  );
  if (!hiddenContainer && !videoEl && !regElContainer) {
    window.requestAnimationFrame(addCountDown);
  } else if (!videoEl) {
    var date = new Date(_eventData.publishingDate);
    var countDownDay = date.getTime();
    var dateSpan = document.querySelector("#date-span");
    dateSpan.innerHTML = date.getDate() + "." + (date.getMonth() + 1) + "." + date.getFullYear();
    // today
    var now = new Date().getTime();
    if (countDownDay === now || countDownDay < now) {
      var hiddenTextContainer = document.querySelector(
        ".hidden-text-container"
      );
      hiddenTextContainer.style.display = "none";
    } else {
      setInterval(function () {
        var daysEl = document.getElementById("days");
        var hoursEl = document.getElementById("hours");
        var minutesEl = document.getElementById("minutes");
        var secondsEl = document.getElementById("seconds");
        // distance
        var currentNow = new Date().getTime();
        var distance = countDownDay - currentNow;
        // setting distance time to days, hours, minutes, seconds
        var days = Math.floor(distance / (1000 * 3600 * 24));


        var hours = Math.floor((distance % (1000 * 3600 * 24)) / (1000 * 3600));
        var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
        var seconds = Math.floor((distance % (1000 * 60)) / 1000);
        // display result
        if (days < 10) {
          daysEl.innerHTML = "0" + days + " ";
        } else {
          daysEl.innerHTML = days + " ";
        }
        if (hours < 10) {
          hoursEl.innerHTML = "0" + hours + " ";
        } else {
          hoursEl.innerHTML = hours + " ";
        }
        if (minutes < 10) {
          minutesEl.innerHTML = "0" + minutes + " ";
        } else {
          minutesEl.innerHTML = minutes + " ";
        }
        if (seconds < 10) {
          secondsEl.innerHTML = "0" + seconds + " ";
        } else {
          secondsEl.innerHTML = seconds + " ";
        }
        if (seconds < 0) {
          var hiddenTextContainer = document.querySelector(
            ".hidden-text-container"
          );
          hiddenTextContainer.style.display = "none";
        }
      }, 1000);
    }
  }
}

if (!url.includes("register")) {
  addCountDown();
}
</script>

Topic list to About section

HTML:

<ul>
  <li>Topic 1</li>
  <li>Topic 2</li>
  <li>Topic 3</li>
  <li>Topic 4</li>
  <li>Topic 5</li>
</ul>

Looks like this:

  • Topic 1
  • Topic 2
  • Topic 3
  • Topic 4
  • Topic 5

Can't find what you're looking for?

Our AI assistant is here to help you find the information you need.

Ask Videosync AI

🤖

Hi! I'm Videosync AI, your documentation assistant. Ask me anything about the documentation!