diff --git a/src/Plugin/EntityBrowser/Display/IFrame.php b/src/Plugin/EntityBrowser/Display/IFrame.php
index dbe558e..4aef4fe 100644
--- a/src/Plugin/EntityBrowser/Display/IFrame.php
+++ b/src/Plugin/EntityBrowser/Display/IFrame.php
@@ -65,9 +65,9 @@ class IFrame extends DisplayBase implements DisplayRouterInterface {
    *   The plugin implementation definition.
    * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
    *   Event dispatcher service.
-   * @param \Drupal\Component\Uuid\UuidInterface
+   * @param \Drupal\Component\Uuid\UuidInterface $uuid
    *   UUID generator interface.
-   * @parem \Drupal\Core\KeyValueStore\KeyValueStoreExpirableInterface $selection_storage
+   * @param \Drupal\Core\KeyValueStore\KeyValueStoreExpirableInterface $selection_storage
    *   The selection storage.
    * @param \Drupal\Core\Routing\RouteMatchInterface $current_route_match
    *   The currently active route match object.
@@ -178,8 +178,10 @@ class IFrame extends DisplayBase implements DisplayRouterInterface {
   }
 
   /**
-   * KernelEvents::RESPONSE listener. Intercepts default response and injects
-   * response that will trigger JS to propagate selected entities upstream.
+   * KernelEvents::RESPONSE listener.
+   *
+   * Intercepts default response and injects response that will trigger JS to
+   * propagate selected entities upstream.
    *
    * @param FilterResponseEvent $event
    *   Response event.
@@ -222,10 +224,10 @@ class IFrame extends DisplayBase implements DisplayRouterInterface {
   public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
     $configuration = $this->getConfiguration();
     $form['width'] = [
-      '#type' => 'number',
+      '#type' => 'textfield',
       '#title' => $this->t('Width of the iFrame'),
-      '#min' => 1,
       '#default_value' => $configuration['width'],
+      '#description' => $this->t('Positive integer for absolute size or a relative size in percentages.'),
     ];
 
     $form['height'] = [
@@ -254,9 +256,12 @@ class IFrame extends DisplayBase implements DisplayRouterInterface {
    * {@inheritdoc}
    */
   public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
-    if ($form_state->getValue('width') <= 0) {
-      $form_state->setError($form['width'], $this->t('Width must be greater than 0.'));
+    // We want all positive integers, or percentages between 1% and 100%.
+    $pattern = '/^([1-9][0-9]*|([2-9][0-9]{0,1}%)|(1[0-9]{0,2}%))$/';
+    if (preg_match($pattern, $form_state->getValue('width')) == 0) {
+      $form_state->setError($form['width'], $this->t('Width must be a number greater than 0, or a percentage between 1% and 100%.'));
     }
+
     if ($form_state->getValue('height') <= 0) {
       $form_state->setError($form['height'], $this->t('Height must be greater than 0.'));
     }
